{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "8186eb46d6a541ebbc3dfecb3f6c3d3f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_d510efadcd594cc99d690ba1676456e6",
              "IPY_MODEL_e2a833f60c414eebb73875585f2087d9",
              "IPY_MODEL_4fff15c397a845c8b0f83913ccaca248"
            ],
            "layout": "IPY_MODEL_f7ecb29d5845494c8faf918645e7923c"
          }
        },
        "d510efadcd594cc99d690ba1676456e6": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_6e42d6fa2ed64e8db07797f172dedf83",
            "placeholder": "​",
            "style": "IPY_MODEL_755be3983f26440f8cd4599539fa4c1f",
            "value": ""
          }
        },
        "e2a833f60c414eebb73875585f2087d9": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_312cc69235df4c86b57698d280560469",
            "max": 700096,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_4dd118a3c77540bda8a1396e057d5270",
            "value": 700096
          }
        },
        "4fff15c397a845c8b0f83913ccaca248": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_c84d7277c112473391f1275df96a15d7",
            "placeholder": "​",
            "style": "IPY_MODEL_c47c3641efc64b1cb1227041ddf7cafc",
            "value": " 700416/? [00:00&lt;00:00, 806399.32it/s]"
          }
        },
        "f7ecb29d5845494c8faf918645e7923c": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "6e42d6fa2ed64e8db07797f172dedf83": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "755be3983f26440f8cd4599539fa4c1f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "312cc69235df4c86b57698d280560469": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "4dd118a3c77540bda8a1396e057d5270": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "c84d7277c112473391f1275df96a15d7": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "c47c3641efc64b1cb1227041ddf7cafc": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "e42e47d2b29a429bb6f6dfd86b7d5df8": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_eca85ba490074e2096c0739bc9748669",
              "IPY_MODEL_1a01f82b49334bdf9bb69c8c044f6dfe",
              "IPY_MODEL_e3b2c659d2554b049530cd84b92c7d2a"
            ],
            "layout": "IPY_MODEL_c207093eb41c47828225471a355f7545"
          }
        },
        "eca85ba490074e2096c0739bc9748669": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8dde0873619347ebba0304a73a4a069e",
            "placeholder": "​",
            "style": "IPY_MODEL_9909d5bb957447f8a162678a4c63577d",
            "value": ""
          }
        },
        "1a01f82b49334bdf9bb69c8c044f6dfe": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_c14851d6d8d440b39b9fee9af59198bc",
            "max": 311022,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_a98ce5caf44247deae75704b5395c648",
            "value": 311022
          }
        },
        "e3b2c659d2554b049530cd84b92c7d2a": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f8e6948c1f1748aba985616799afca3e",
            "placeholder": "​",
            "style": "IPY_MODEL_9b2da9c9fe58459e85de6230a638c29e",
            "value": " 311296/? [00:00&lt;00:00, 438097.47it/s]"
          }
        },
        "c207093eb41c47828225471a355f7545": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8dde0873619347ebba0304a73a4a069e": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9909d5bb957447f8a162678a4c63577d": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "c14851d6d8d440b39b9fee9af59198bc": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "a98ce5caf44247deae75704b5395c648": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "f8e6948c1f1748aba985616799afca3e": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "9b2da9c9fe58459e85de6230a638c29e": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "source": [
        "!pip install snntorch --quiet\n",
        "!pip install tonic --quiet"
      ],
      "metadata": {
        "id": "7Ltk5S5QcdQA",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "97078838-248d-4b57-add5-6e4303b6dda8"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[?25l     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/109.0 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m109.0/109.0 kB\u001b[0m \u001b[31m3.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.2/76.2 kB\u001b[0m \u001b[31m11.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m110.7/110.7 kB\u001b[0m \u001b[31m4.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m107.5/107.5 kB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.4/50.4 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "4eqFxt6KVPek"
      },
      "outputs": [],
      "source": [
        "#imports\n",
        "import tonic\n",
        "import matplotlib.pyplot as plt\n",
        "import tonic.transforms as transforms\n",
        "\n",
        "import snntorch as snn\n",
        "from snntorch import utils\n",
        "from snntorch import surrogate\n",
        "from snntorch import functional as SF\n",
        "\n",
        "import torch\n",
        "import torchvision\n",
        "import torch.nn as nn\n",
        "from torch.utils.data import DataLoader\n",
        "import itertools\n",
        "device = torch.device(\"cuda\") if torch.cuda.is_available() else torch.device(\"mps\") if torch.backends.mps.is_available() else torch.device(\"cpu\")"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "#1. The Dataset - POKERDVS\n",
        "The dataset used in this tutorial is POKERDVS by T. Serrano-Gotarredona and B. Linares-Barranco.\n",
        "\n",
        "It is comprised of 4 classes, each being a suite of a playing card deck. (clubs, spades, hearts, and diamonds)\n",
        "\n",
        "The data consists of 131 poker pip symbols, and was collected by flipping poker cards in front of a DVS128 camera.\n"
      ],
      "metadata": {
        "id": "psE8i4av0DUk"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "#1.1 Loading the Dataset and Transforming it with Tonic\n",
        "The dataset presents data in a raw event format, so it must be shaped into a suitable format that can be fed into a model.\n",
        "\n",
        "The following code bins the raw DVS event data into 2000ms time windows, allowing the resulting tensors to be preprocessed before being put into the DataLoader."
      ],
      "metadata": {
        "id": "-3AkV5zf1Zzr"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "sensor_size = tonic.datasets.POKERDVS.sensor_size\n",
        "# converting 2000 ms blocks of data into frames\n",
        "frame_transform = transforms.ToFrame(sensor_size=sensor_size, time_window=2000)\n",
        "\n",
        "poker_train = tonic.datasets.POKERDVS(save_to = './data', train = True, transform = frame_transform)\n",
        "poker_test = tonic.datasets.POKERDVS(save_to = './data', train = False, transform = frame_transform)"
      ],
      "metadata": {
        "id": "-Dn-PWiTrBAS",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 152,
          "referenced_widgets": [
            "8186eb46d6a541ebbc3dfecb3f6c3d3f",
            "d510efadcd594cc99d690ba1676456e6",
            "e2a833f60c414eebb73875585f2087d9",
            "4fff15c397a845c8b0f83913ccaca248",
            "f7ecb29d5845494c8faf918645e7923c",
            "6e42d6fa2ed64e8db07797f172dedf83",
            "755be3983f26440f8cd4599539fa4c1f",
            "312cc69235df4c86b57698d280560469",
            "4dd118a3c77540bda8a1396e057d5270",
            "c84d7277c112473391f1275df96a15d7",
            "c47c3641efc64b1cb1227041ddf7cafc",
            "e42e47d2b29a429bb6f6dfd86b7d5df8",
            "eca85ba490074e2096c0739bc9748669",
            "1a01f82b49334bdf9bb69c8c044f6dfe",
            "e3b2c659d2554b049530cd84b92c7d2a",
            "c207093eb41c47828225471a355f7545",
            "8dde0873619347ebba0304a73a4a069e",
            "9909d5bb957447f8a162678a4c63577d",
            "c14851d6d8d440b39b9fee9af59198bc",
            "a98ce5caf44247deae75704b5395c648",
            "f8e6948c1f1748aba985616799afca3e",
            "9b2da9c9fe58459e85de6230a638c29e"
          ]
        },
        "outputId": "fd41b16b-bdf4-4a05-d5a0-ee17efb7b94e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Downloading https://nextcloud.lenzgregor.com/s/ZeCPYBS8kx4Wyjd/download/pips_train.tar.gz to ./data/POKERDVS/pips_train.tar.gz\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/700096 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "8186eb46d6a541ebbc3dfecb3f6c3d3f"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Extracting ./data/POKERDVS/pips_train.tar.gz to ./data/POKERDVS\n",
            "Downloading https://nextcloud.lenzgregor.com/s/2iRfwg3y9eAMpGL/download/pips_test.tar.gz to ./data/POKERDVS/pips_test.tar.gz\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "  0%|          | 0/311022 [00:00<?, ?it/s]"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "e42e47d2b29a429bb6f6dfd86b7d5df8"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Extracting ./data/POKERDVS/pips_test.tar.gz to ./data/POKERDVS\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "#1.2 Visualizing the Data\n",
        "We can use pyplot to vizualize each of the frames being passed into the dataloader.\n",
        "\n",
        "As seen below, outlines of poker symbols are visible in each frame."
      ],
      "metadata": {
        "id": "m4qkgn-a1nwz"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "fig, ax = plt.subplots(1, 6)\n",
        "data, targets = poker_train[0]\n",
        "ax[0].axis('off')\n",
        "ax[1].axis('off')\n",
        "ax[2].axis('off')\n",
        "ax[3].axis('off')\n",
        "ax[4].axis('off')\n",
        "ax[5].axis('off')\n",
        "ax[0].imshow(data[0][0])\n",
        "ax[1].imshow(data[0][1])\n",
        "ax[2].imshow(data[3][0])\n",
        "ax[3].imshow(data[3][1])\n",
        "ax[4].imshow(data[5][0])\n",
        "ax[5].imshow(data[5][1])"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 125
        },
        "id": "H7Y5tzaEOCV7",
        "outputId": "b3912584-e145-45b4-d994-43aab9f0c8af"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.image.AxesImage at 0x78093ddb7a00>"
            ]
          },
          "metadata": {},
          "execution_count": 4
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 6 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "#1.3 Caching and Loading the Dataset\n",
        "A dataloader can be used to prepare our data for training by separating it into batches and shuffling it. We can also use caching to speed up the dataloading process by reading data from cache rather than the disk."
      ],
      "metadata": {
        "id": "43SCjJquOUtE"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from tonic import DiskCachedDataset\n",
        "\n",
        "cached_trainset = DiskCachedDataset(poker_train, cache_path='./cache/dvspoker/train')\n",
        "cached_testset = DiskCachedDataset(poker_test, cache_path='./cache/dvspoker/test')"
      ],
      "metadata": {
        "id": "MIKjHukk93Ys"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "#Set a mini-batch size of 8, for a total of 6 training batches\n",
        "batch_size = 8\n",
        "trainloader = DataLoader(cached_trainset, batch_size=batch_size, collate_fn=tonic.collation.PadTensors(batch_first=False), shuffle=True)\n",
        "testloader = DataLoader(cached_testset, batch_size=batch_size, collate_fn=tonic.collation.PadTensors(batch_first=False))"
      ],
      "metadata": {
        "id": "5ilrV0Er-zRF"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(len(trainloader))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "jpVJX7y2QNvf",
        "outputId": "12622ee2-ba07-4167-923a-d65008f2e412"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "6\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "#2. The Model"
      ],
      "metadata": {
        "id": "7HzTn6HeitLL"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "#2.1 Defining the Network\n",
        "The model used is a sequential network comprised of two sets of convolution layers with 5x5 filters, followed by a final linear and leaky output layer that convert the 800 tensor into 4 output classes.\n",
        "\n",
        "The forward function gets the spikes from one batch of data and returns them as a tensor."
      ],
      "metadata": {
        "id": "8aVrdOrlsmLE"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#parameters\n",
        "num_classes = 4\n",
        "spike_grad = surrogate.atan() # arctan surrogate gradient function\n",
        "beta = 0.5\n",
        "\n",
        "net = nn.Sequential(nn.Conv2d(2, 12, 5), # first conv layer\n",
        "                        snn.Leaky(beta=beta, spike_grad=spike_grad, init_hidden=True),\n",
        "                        nn.MaxPool2d(2),\n",
        "                        nn.Conv2d(12, 32, 5), # second conv layer\n",
        "                        snn.Leaky(beta=beta, spike_grad=spike_grad, init_hidden=True),\n",
        "                        nn.MaxPool2d(2),\n",
        "                        nn.Flatten(),\n",
        "                        nn.Linear(32*5*5, num_classes), #flattened linear layer\n",
        "                        snn.Leaky(beta=beta, spike_grad=spike_grad, init_hidden=True, output=True)\n",
        "                        ).to(device)\n",
        "\n",
        "def forward(net, data):  # define forward function\n",
        "  spk_rec = []\n",
        "  utils.reset(net)  # resets hidden states for all LIF neurons in net\n",
        "  for step in range(data.size(0)):  # data.size(0) = number of time steps\n",
        "      spk_out, mem_out = net(data[step])\n",
        "      spk_rec.append(spk_out)\n",
        "  return torch.stack(spk_rec)"
      ],
      "metadata": {
        "id": "ixX6-AV9_YXs"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "optimizer = torch.optim.Adam(net.parameters(), lr=0.003, betas=(0.9, 0.999)) # learning rate = 0.003\n",
        "loss_fn = SF.mse_count_loss(correct_rate=0.8, incorrect_rate=0.2) # MSE loss function"
      ],
      "metadata": {
        "id": "v50G4Z68A0Tw"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "#2.2 Training\n",
        "We will be training our network for 20 epochs, and 6 iterations, since there are 8 batches and 48 total training examples."
      ],
      "metadata": {
        "id": "iw2USPKmsuu_"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "num_epochs = 20\n",
        "num_iters = 6\n",
        "\n",
        "loss_hist = []\n",
        "acc_hist = []\n",
        "test_acc_hist = []\n",
        "\n",
        "# training loop\n",
        "for epoch in range(num_epochs):\n",
        "    for i, (data, targets) in enumerate(iter(trainloader)):\n",
        "        data = data.to(device)\n",
        "        targets = targets.to(device)\n",
        "\n",
        "        net.train()\n",
        "        spk_rec = forward(net, data)\n",
        "        loss_val = loss_fn(spk_rec, targets)\n",
        "\n",
        "        # Gradient calculation + weight update\n",
        "        optimizer.zero_grad()\n",
        "        loss_val.backward()\n",
        "        optimizer.step()\n",
        "\n",
        "        # Store loss history for future plotting\n",
        "        loss_hist.append(loss_val.item())\n",
        "\n",
        "        print(f\"Epoch {epoch}, Iteration {i} \\nTrain Loss: {loss_val.item():.2f}\")\n",
        "\n",
        "        acc = SF.accuracy_rate(spk_rec, targets)\n",
        "        acc_hist.append(acc)\n",
        "        print(f\"Accuracy: {acc * 100:.2f}%\\n\")\n",
        "\n",
        "        correct = 0\n",
        "        total = 0\n",
        "        for i, (test_data, test_targets) in enumerate(iter(testloader)):\n",
        "            test_data = test_data.to(device)\n",
        "            test_targets = test_targets.to(device)\n",
        "            spk_rec = forward(net, test_data)\n",
        "            correct += SF.accuracy_rate(spk_rec, test_targets) * spk_rec.size(1)\n",
        "            total += spk_rec.size(1)\n",
        "\n",
        "        test_acc = (correct/total) * 100\n",
        "        test_acc_hist.append(test_acc)\n",
        "        print(f\"========== Test Set Accuracy: {test_acc:.2f}% ==========\\n\")\n",
        "        # This will end training after 6 iterations by default\n",
        "        if i == num_iters:\n",
        "          break"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "f1K4-Uf0A7bs",
        "outputId": "90c842bf-5d26-401f-9dc2-52a1e23286b4"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 0, Iteration 0 \n",
            "Train Loss: 2.37\n",
            "Accuracy: 12.50%\n",
            "\n",
            "========== Test Set Accuracy: 25.00% ==========\n",
            "\n",
            "Epoch 0, Iteration 1 \n",
            "Train Loss: 1.86\n",
            "Accuracy: 12.50%\n",
            "\n",
            "========== Test Set Accuracy: 40.00% ==========\n",
            "\n",
            "Epoch 0, Iteration 2 \n",
            "Train Loss: 1.08\n",
            "Accuracy: 25.00%\n",
            "\n",
            "========== Test Set Accuracy: 25.00% ==========\n",
            "\n",
            "Epoch 0, Iteration 3 \n",
            "Train Loss: 0.65\n",
            "Accuracy: 12.50%\n",
            "\n",
            "========== Test Set Accuracy: 30.00% ==========\n",
            "\n",
            "Epoch 0, Iteration 4 \n",
            "Train Loss: 0.78\n",
            "Accuracy: 37.50%\n",
            "\n",
            "========== Test Set Accuracy: 35.00% ==========\n",
            "\n",
            "Epoch 0, Iteration 5 \n",
            "Train Loss: 1.09\n",
            "Accuracy: 50.00%\n",
            "\n",
            "========== Test Set Accuracy: 25.00% ==========\n",
            "\n",
            "Epoch 1, Iteration 0 \n",
            "Train Loss: 1.01\n",
            "Accuracy: 25.00%\n",
            "\n",
            "========== Test Set Accuracy: 20.00% ==========\n",
            "\n",
            "Epoch 1, Iteration 1 \n",
            "Train Loss: 1.03\n",
            "Accuracy: 37.50%\n",
            "\n",
            "========== Test Set Accuracy: 35.00% ==========\n",
            "\n",
            "Epoch 1, Iteration 2 \n",
            "Train Loss: 1.23\n",
            "Accuracy: 0.00%\n",
            "\n",
            "========== Test Set Accuracy: 35.00% ==========\n",
            "\n",
            "Epoch 1, Iteration 3 \n",
            "Train Loss: 0.79\n",
            "Accuracy: 37.50%\n",
            "\n",
            "========== Test Set Accuracy: 40.00% ==========\n",
            "\n",
            "Epoch 1, Iteration 4 \n",
            "Train Loss: 1.11\n",
            "Accuracy: 50.00%\n",
            "\n",
            "========== Test Set Accuracy: 85.00% ==========\n",
            "\n",
            "Epoch 1, Iteration 5 \n",
            "Train Loss: 0.93\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 80.00% ==========\n",
            "\n",
            "Epoch 2, Iteration 0 \n",
            "Train Loss: 0.55\n",
            "Accuracy: 62.50%\n",
            "\n",
            "========== Test Set Accuracy: 65.00% ==========\n",
            "\n",
            "Epoch 2, Iteration 1 \n",
            "Train Loss: 0.89\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 85.00% ==========\n",
            "\n",
            "Epoch 2, Iteration 2 \n",
            "Train Loss: 0.90\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 65.00% ==========\n",
            "\n",
            "Epoch 2, Iteration 3 \n",
            "Train Loss: 0.93\n",
            "Accuracy: 62.50%\n",
            "\n",
            "========== Test Set Accuracy: 65.00% ==========\n",
            "\n",
            "Epoch 2, Iteration 4 \n",
            "Train Loss: 0.67\n",
            "Accuracy: 37.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 2, Iteration 5 \n",
            "Train Loss: 0.59\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 3, Iteration 0 \n",
            "Train Loss: 0.64\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 3, Iteration 1 \n",
            "Train Loss: 0.34\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 3, Iteration 2 \n",
            "Train Loss: 0.76\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 3, Iteration 3 \n",
            "Train Loss: 0.45\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 3, Iteration 4 \n",
            "Train Loss: 0.82\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 3, Iteration 5 \n",
            "Train Loss: 0.62\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 4, Iteration 0 \n",
            "Train Loss: 0.60\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 85.00% ==========\n",
            "\n",
            "Epoch 4, Iteration 1 \n",
            "Train Loss: 0.45\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 4, Iteration 2 \n",
            "Train Loss: 0.82\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 4, Iteration 3 \n",
            "Train Loss: 0.77\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 4, Iteration 4 \n",
            "Train Loss: 0.32\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 4, Iteration 5 \n",
            "Train Loss: 0.32\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 5, Iteration 0 \n",
            "Train Loss: 0.36\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 5, Iteration 1 \n",
            "Train Loss: 0.25\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 5, Iteration 2 \n",
            "Train Loss: 0.36\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 5, Iteration 3 \n",
            "Train Loss: 0.80\n",
            "Accuracy: 62.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 5, Iteration 4 \n",
            "Train Loss: 0.69\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 85.00% ==========\n",
            "\n",
            "Epoch 5, Iteration 5 \n",
            "Train Loss: 0.44\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 6, Iteration 0 \n",
            "Train Loss: 0.30\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 6, Iteration 1 \n",
            "Train Loss: 0.45\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 6, Iteration 2 \n",
            "Train Loss: 0.39\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 6, Iteration 3 \n",
            "Train Loss: 0.58\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 6, Iteration 4 \n",
            "Train Loss: 0.32\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 6, Iteration 5 \n",
            "Train Loss: 0.42\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 7, Iteration 0 \n",
            "Train Loss: 0.48\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 7, Iteration 1 \n",
            "Train Loss: 0.28\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 7, Iteration 2 \n",
            "Train Loss: 0.37\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 7, Iteration 3 \n",
            "Train Loss: 0.27\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 7, Iteration 4 \n",
            "Train Loss: 0.61\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 7, Iteration 5 \n",
            "Train Loss: 0.27\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 8, Iteration 0 \n",
            "Train Loss: 0.74\n",
            "Accuracy: 62.50%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 8, Iteration 1 \n",
            "Train Loss: 0.27\n",
            "Accuracy: 75.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 8, Iteration 2 \n",
            "Train Loss: 0.24\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 8, Iteration 3 \n",
            "Train Loss: 0.50\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 8, Iteration 4 \n",
            "Train Loss: 0.24\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 8, Iteration 5 \n",
            "Train Loss: 0.30\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 9, Iteration 0 \n",
            "Train Loss: 0.29\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 9, Iteration 1 \n",
            "Train Loss: 0.21\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 9, Iteration 2 \n",
            "Train Loss: 0.16\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 9, Iteration 3 \n",
            "Train Loss: 0.35\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 9, Iteration 4 \n",
            "Train Loss: 0.54\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 9, Iteration 5 \n",
            "Train Loss: 0.26\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 10, Iteration 0 \n",
            "Train Loss: 0.36\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 10, Iteration 1 \n",
            "Train Loss: 0.15\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 90.00% ==========\n",
            "\n",
            "Epoch 10, Iteration 2 \n",
            "Train Loss: 0.25\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 10, Iteration 3 \n",
            "Train Loss: 0.56\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 10, Iteration 4 \n",
            "Train Loss: 0.25\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 10, Iteration 5 \n",
            "Train Loss: 0.17\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 11, Iteration 0 \n",
            "Train Loss: 0.42\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 11, Iteration 1 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 11, Iteration 2 \n",
            "Train Loss: 0.08\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 11, Iteration 3 \n",
            "Train Loss: 0.43\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 11, Iteration 4 \n",
            "Train Loss: 0.26\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 11, Iteration 5 \n",
            "Train Loss: 0.19\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 12, Iteration 0 \n",
            "Train Loss: 0.31\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 12, Iteration 1 \n",
            "Train Loss: 0.20\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 12, Iteration 2 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 12, Iteration 3 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 12, Iteration 4 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 12, Iteration 5 \n",
            "Train Loss: 0.33\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 95.00% ==========\n",
            "\n",
            "Epoch 13, Iteration 0 \n",
            "Train Loss: 0.12\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 13, Iteration 1 \n",
            "Train Loss: 0.44\n",
            "Accuracy: 87.50%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 13, Iteration 2 \n",
            "Train Loss: 0.08\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 13, Iteration 3 \n",
            "Train Loss: 0.25\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 13, Iteration 4 \n",
            "Train Loss: 0.13\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 13, Iteration 5 \n",
            "Train Loss: 0.20\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 14, Iteration 0 \n",
            "Train Loss: 0.28\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 14, Iteration 1 \n",
            "Train Loss: 0.18\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 14, Iteration 2 \n",
            "Train Loss: 0.15\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 14, Iteration 3 \n",
            "Train Loss: 0.24\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 14, Iteration 4 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 14, Iteration 5 \n",
            "Train Loss: 0.11\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 15, Iteration 0 \n",
            "Train Loss: 0.15\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 15, Iteration 1 \n",
            "Train Loss: 0.12\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 15, Iteration 2 \n",
            "Train Loss: 0.21\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 15, Iteration 3 \n",
            "Train Loss: 0.13\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 15, Iteration 4 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 15, Iteration 5 \n",
            "Train Loss: 0.12\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 16, Iteration 0 \n",
            "Train Loss: 0.32\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 16, Iteration 1 \n",
            "Train Loss: 0.11\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 16, Iteration 2 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 16, Iteration 3 \n",
            "Train Loss: 0.13\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 16, Iteration 4 \n",
            "Train Loss: 0.11\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 16, Iteration 5 \n",
            "Train Loss: 0.18\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 17, Iteration 0 \n",
            "Train Loss: 0.09\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 17, Iteration 1 \n",
            "Train Loss: 0.31\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 17, Iteration 2 \n",
            "Train Loss: 0.25\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 17, Iteration 3 \n",
            "Train Loss: 0.10\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 17, Iteration 4 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 17, Iteration 5 \n",
            "Train Loss: 0.11\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 18, Iteration 0 \n",
            "Train Loss: 0.20\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 18, Iteration 1 \n",
            "Train Loss: 0.11\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 18, Iteration 2 \n",
            "Train Loss: 0.11\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 18, Iteration 3 \n",
            "Train Loss: 0.14\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 18, Iteration 4 \n",
            "Train Loss: 0.13\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 18, Iteration 5 \n",
            "Train Loss: 0.09\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 19, Iteration 0 \n",
            "Train Loss: 0.09\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 19, Iteration 1 \n",
            "Train Loss: 0.08\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 19, Iteration 2 \n",
            "Train Loss: 0.23\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 19, Iteration 3 \n",
            "Train Loss: 0.16\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 19, Iteration 4 \n",
            "Train Loss: 0.13\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n",
            "Epoch 19, Iteration 5 \n",
            "Train Loss: 0.18\n",
            "Accuracy: 100.00%\n",
            "\n",
            "========== Test Set Accuracy: 100.00% ==========\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "#3. Results"
      ],
      "metadata": {
        "id": "_F_XXoVd0huz"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Plot Loss\n",
        "fig = plt.figure(facecolor=\"w\")\n",
        "plt.plot(loss_hist)\n",
        "plt.title(\"Train Set Loss\")\n",
        "plt.xlabel(\"Iteration\")\n",
        "plt.ylabel(\"Loss\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 472
        },
        "id": "HVbQwHhkBQ0W",
        "outputId": "e9653b88-aab7-4be0-ee4e-73f239a69940"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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cwO+Nly7owSxk+vAgQMYNGiQ+rjNZsOxY8e8rkcEtN/97nfYsmULZs6ciaVLl+L//b//BwDQ6XS44IILcMEFF+DJJ5/EH//4R/z2t7/FunXrOvzZiHo7LksRUVBEtUBbZbHZbHj++ecj/r0/++wztLW1eT3+4YcfAnAtBc2bNw9WqxV//OMffT6/vLxc/eekpCQA8Nqm3Vlz586FyWTCs88+63aP/v73v6O2thbz588HANTV1aG9vd3ttWPGjIFOp0NraysAoKqqyuv9x48fDwDqc4jIP1ZuiCgoM2bMQHp6Om655Rb89Kc/hSRJWL58eUhLSp312GOPYefOnbj66qsxduxYAMCuXbvw2muvISMjA4sWLQIAWK1WvPDCC7jpppswceJEXHfddcjOzkZRURH+97//YebMmViyZAkAYNKkSQCAn/70p5g3bx70ej2uu+66gNdRXl6uVla0Bg4ciBtuuAH3338/fv/73+Piiy/G5ZdfjgMHDuD555/HlClT1N6ktWvXYuHChbjmmmswbNgwtLe3Y/ny5dDr9fjud78LAHjkkUewceNGzJ8/HwMGDEBZWRmef/559OvXD+ecc05Y7ilRXIvtZi0iiiV/W8H9bXnevHmzfPbZZ8sJCQlyfn6+/Mtf/lL+5JNPZADyunXr1Of52wr+5z//2es9AcgPPfRQwOvcvHmzvGDBAnn06NFyamqqbDQa5f79+8u33nqrfOTIEa/nr1u3Tp43b56cmpoqWywWefDgwfKtt94q79ixQ31Oe3u7/JOf/ETOzs6WJUnqcFu42CLv69cFF1ygPm/JkiXyiBEjZKPRKOfm5sr33HOPXF1drX796NGj8g9/+EN58ODBssVikTMyMuTzzjtPXr16tfqcNWvWyFdccYWcn58vm0wmOT8/X77++uvlgwcPBrxGIlLwbCkiIiKKK+y5ISIiorjCcENERERxheGGiIiI4grDDREREcUVhhsiIiKKKww3REREFFd63RA/h8OB06dPIyUlJezj14mIiCgyZFlGfX098vPzodMFrs30unBz+vRpFBQUxPoyiIiIqBOKi4vRr1+/gM/pdeEmJSUFgHJzrFZrjK+GiIiIglFXV4eCggL1czyQXhduxFKU1WpluCEiIuphgmkpYUMxERERxRWGGyIiIoorDDdEREQUVxhuiIiIKK4w3BAREVFcYbghIiKiuMJwQ0RERHGF4YaIiIjiCsMNERERxRWGGyIiIoorDDdEREQUVxhuiIiIKK70uoMzI8XW7kBlYyva7TIKMhJjfTlERES9Fis3YbKrqBrTF6/FLa9si/WlEBER9WoMN2GSbFaKYA2t7TG+EiIiot6N4SZMkpzhppHhhoiIKKYYbsIkyawHADS12eFwyDG+GiIiot6L4SZMxLKULAPNbfYYXw0REVHvxXATJglGPXSS8s9cmiIiIoodhpswkSQJSSY2FRMREcUaw00YuZqKuSxFREQUKww3YSSailm5ISIiih2GmzBK5nZwIiKimGO4CSN1WcrGcENERBQrDDdhlMQpxURERDHHcBNGXJYiIiKKPYabMHI1FHO3FBERUaww3IQRz5ciIiKKPYabMEo2MdwQERHFGsNNGCWyoZiIiCjmGG7CKNnZc8PKDRERUeww3IQRj18gIiKKPYabMOKcGyIiothjuAkjMeemiROKiYiIYobhJoySTKJyw2UpIiKiWGG4CSNOKCYiIoo9hpswEhOKm9vssDvkGF8NERFR78RwE0aioRjgyeBERESxwnATRmaDDgadBIBLU0RERLHCcBNGkiTxfCkiIqIYY7gJs2Qzd0wRERHFEsNNmCXxCAYiIqKYYrgJM04pJiIiii2GmzDjrBsiIqLYYrgJMzGlmOGGiIgoNhhuwiyJDcVEREQxxXATZslsKCYiIoophpswS2RDMRERUUwx3IQZG4qJiIhii+EmzJJMzmUpni1FREQUEww3YeY6foENxURERLHAcBNmXJYiIiKKLYabMOOEYiIiothiuAkzdVmKPTdEREQxwXATZsnsuSEiIoophpswE6eCc1mKiIgoNhhuwkxUbmztDrTZHTG+GiIiot6H4SbMRM8NwB1TREREscBwE2ZGvQ4mg3JbuTRFREQUfQw3EcCmYiIiothhuIkANhUTERHFDsNNBCSZOKWYiIgoVhhuIoBHMBAREcUOw00E8AgGIiKi2IlpuFm8eDGmTJmClJQU5OTk4Morr8SBAwc6fN27776LESNGwGKxYMyYMfjwww+jcLXBY+WGiIgodmIabjZs2IAFCxbg888/x6pVq9DW1oaLLroIjY2Nfl+zZcsWXH/99bj99tuxe/duXHnllbjyyiuxd+/eKF55YIkmpaG40cbdUkRERNEmybIsx/oihPLycuTk5GDDhg0499xzfT7n2muvRWNjIz744AP1sbPPPhvjx4/H0qVLO/wedXV1SE1NRW1tLaxWa9iuXevh/+7Dsi3Hcc+cwfjVxSMi8j2IiIh6k1A+v7tVz01tbS0AICMjw+9ztm7dirlz57o9Nm/ePGzdutXn81tbW1FXV+f2K9LEslQTl6WIiIiirtuEG4fDgUWLFmHmzJkYPXq03+eVlJQgNzfX7bHc3FyUlJT4fP7ixYuRmpqq/iooKAjrdfviaijmshQREVG0dZtws2DBAuzduxdvvfVWWN/3/vvvR21trfqruLg4rO/vS7JziB8biomIiKLP0PFTIm/hwoX44IMPsHHjRvTr1y/gc/Py8lBaWur2WGlpKfLy8nw+32w2w2w2h+1agyEqN402hhsiIqJoi2nlRpZlLFy4EO+99x7Wrl2LgQMHdvia6dOnY82aNW6PrVq1CtOnT4/UZYaMc26IiIhiJ6aVmwULFuDNN9/EypUrkZKSovbNpKamIiEhAQBw8803o2/fvli8eDEA4N5778Xs2bPxxBNPYP78+XjrrbewY8cOvPjiizH7OTxxzg0REVHsxLRy88ILL6C2thZz5sxBnz591F9vv/22+pyioiKcOXNG/f2MGTPw5ptv4sUXX8S4cePwr3/9CytWrAjYhBxtSTwVnIiIKGZiWrkJZsTO+vXrvR675pprcM0110TgisIjmaeCExERxUy32S0VT5I0y1LdaEYiERFRr8BwEwEi3LQ7ZLS2O2J8NURERL0Lw00EJJlcq31sKiYiIoouhpsI0OskJBjFID82FRMREUUTw02EcNYNERFRbDDcRIh6BAOnFBMREUUVw02EsHJDREQUGww3EZLEKcVEREQxwXATIUkmngxOREQUCww3EcIjGIiIiGKD4SZCeHgmERFRbDDcRIjaUMzdUkRERFHFcBMhbCgmIiKKDYabCFHn3LDnhoiIKKoYbiIkwXm+VLON4YaIiCiaGG4ixGxQbm1rO8MNERFRNDHcRIjFeXBmS5sjxldCRETUuzDcRAgrN0RERLHBcBMhrNwQERHFBsNNhLByQ0REFBsMNxHCyg0REVFsMNxEiKtyw3BDREQUTQw3ESIqN61tXJYiIiKKJoabCGHlhoiIKDYYbiJEVG5sdgfsDjnGV0NERNR7MNxEiKjcAICN1RsiIqKoYbiJEG24aWHfDRERUdQw3ESIQa+DQScBYN8NERFRNDHcRJBr1g0rN0RERNHCcBNB3DFFREQUfQw3EcTKDRERUfQx3EQQKzdERETRx3ATQSZnuGHlhoiIKHoYbiJIPYKBlRsiIqKoYbiJIDMrN0RERFHHcBNBrNwQERFFH8NNBLFyQ0REFH0MNxHEyg0REVH0MdxEECs3RERE0cdwE0Gs3BAREUUfw00EqUP8WLkhIiKKGoabCGLlhoiIKPoYbiKIPTdERETRx3ATQazcEBERRR/DTQSZjazcEBERRRvDTQRZDKzcEBERRRvDTQSxckNERBR9DDcRZGblhoiIKOoYbiKIlRsiIqLoY7iJIPbcEBERRR/DTQSxckNERBR9DDcRxMoNERFR9DHcRBArN0RERNHHcBNBnFBMREQUfQw3ESTOlrK1O+BwyDG+GiIiot6B4SaCROUGAGx2Vm+IiIiigeEmgkTlBmDfDRERUbQw3ESQUa+DXicBYN8NERFRtDDcRJio3rByQ0REFB0MNxHGHVNERETRxXATYazcEBERRRfDTYSxckNERBRdMQ03GzduxGWXXYb8/HxIkoQVK1YEfP769eshSZLXr5KSkuhccCewckNERBRdMQ03jY2NGDduHJ577rmQXnfgwAGcOXNG/ZWTkxOhK+w6s6jctLFyQ0REFA2GWH7zSy65BJdccknIr8vJyUFaWlr4LygC1MpNOys3RERE0dAje27Gjx+PPn364MILL8TmzZsDPre1tRV1dXVuv6LJwsoNERFRVPWocNOnTx8sXboU//73v/Hvf/8bBQUFmDNnDnbt2uX3NYsXL0Zqaqr6q6CgIIpXzMoNERFRtMV0WSpUw4cPx/Dhw9Xfz5gxA0eOHMFTTz2F5cuX+3zN/fffj/vuu0/9fV1dXVQDDis3RERE0dWjwo0vU6dOxaZNm/x+3Ww2w2w2R/GKPL4/KzdERERR1aOWpXzZs2cP+vTpE+vL8MtiVG4xKzdERETREdPKTUNDAw4fPqz+/tixY9izZw8yMjLQv39/3H///Th16hRee+01AMDTTz+NgQMHYtSoUWhpacHLL7+MtWvX4tNPP43Vj9Ahs0FZlmLlhoiIKDpiGm527NiB8847T/296I255ZZbsGzZMpw5cwZFRUXq1202G37+85/j1KlTSExMxNixY7F69Wq39+huWLkhIiKKLkmWZTnWFxFNdXV1SE1NRW1tLaxWa8S/37NrDuHJVQdx/dQCLL56bMS/HxERUTwK5fO7x/fcdHes3BAREUUXw02EseeGiIgouhhuIoyVGyIiouhiuIkwVm6IiIiii+Emwli5ISIiii6Gmwhj5YaIiCi6GG4izMzKDRERUVQx3EQYKzdERETRxXATYey5ISIiii6GmwhTKzdtrNwQERFFA8NNhKmVm3ZWboiIiKKB4SbCROWmtd2BXnaMFxERUUww3ESYqNwArN4QERFFA8NNhInKDcCmYiIiomhguIkwo16CTlL+uZXbwYmIiCKO4SbCJEnS7Jhi5YaIiCjSGG6iwLVjipUbIiKiSGO4iQJWboiIiKKH4SYKWLkhIiKKHoabKGDlhoiIKHoYbqKAlRsiIqLoYbiJAlZuiIiIoqdT4aa4uBgnT55Uf79t2zYsWrQIL774YtguLJ6YWbkhIiKKmk6Fmx/84AdYt24dAKCkpAQXXnghtm3bht/+9rd45JFHwnqB8YCVGyIioujpVLjZu3cvpk6dCgB45513MHr0aGzZsgVvvPEGli1bFs7riwvsuSEiIoqeToWbtrY2mM1mAMDq1atx+eWXAwBGjBiBM2fOhO/q4gQrN0RERNHTqXAzatQoLF26FJ999hlWrVqFiy++GABw+vRpZGZmhvUC4wErN0RERNHTqXDz2GOP4W9/+xvmzJmD66+/HuPGjQMA/Pe//1WXq8iFlRsiIqLoMXTmRXPmzEFFRQXq6uqQnp6uPn7XXXchMTExbBcXL1i5ISIiip5OVW6am5vR2tqqBpsTJ07g6aefxoEDB5CTkxPWC4wHrNwQERFFT6fCzRVXXIHXXnsNAFBTU4Np06bhiSeewJVXXokXXnghrBcYD1i5ISIiip5OhZtdu3Zh1qxZAIB//etfyM3NxYkTJ/Daa6/h2WefDesFxgOzwRluIlS5Wbe/DC9uPAJZliPy/kRERD1Jp3pumpqakJKSAgD49NNPcfXVV0On0+Hss8/GiRMnwnqB8cBiVJalIlW5+b9/fYmKBhvOH5GDITkpEfkeREREPUWnKjdDhgzBihUrUFxcjE8++QQXXXQRAKCsrAxWqzWsFxgPxPELkei5qWtpQ0WDDQBQ6fxfIiKi3qxT4ebBBx/EL37xCxQWFmLq1KmYPn06AKWKM2HChLBeYDywGCJXuSmualL/ub6lPezvT0RE1NN0alnqe9/7Hs455xycOXNGnXEDABdccAGuuuqqsF1cvIhk5aa4qln95/rWtrC/PxERUU/TqXADAHl5ecjLy1NPB+/Xrx8H+PkRycrNyWpWboiIiLQ6tSzlcDjwyCOPIDU1FQMGDMCAAQOQlpaGP/zhD3A4OMvFU2QrNww3REREWp2q3Pz2t7/F3//+d/zpT3/CzJkzAQCbNm3Cww8/jJaWFjz66KNhvciezhzJnptq17JUXQuXpYiIiDoVbl599VW8/PLL6mngADB27Fj07dsXP/7xjxluPFhYuSEiIoqaTi1LVVVVYcSIEV6PjxgxAlVVVV2+qHgTqcqNLMs4qancMNwQERF1MtyMGzcOS5Ys8Xp8yZIlGDt2bJcvKt5oe27COUW4stGG5jZXYKrnshQREVHnlqUef/xxzJ8/H6tXr1Zn3GzduhXFxcX48MMPw3qB8UBMKAYAm92hVnK6SrskBbByQ0REBHSycjN79mwcPHgQV111FWpqalBTU4Orr74a+/btw/Lly8N9jT2eOFsKAFrbw9d3I5qJdZLye1ZuiIiIujDnJj8/36tx+Msvv8Tf//53vPjii12+sHhi0usgSYAsAy1tdlgtxrC8r6jcDM5OxqGyBlZuiIiI0MnKDYVGkqSInAwuBviNzFfO82K4ISIiYriJmkicDC6OXjirjxJuGlrbYXeEr2GZiIioJ2K4iRJRuQnnrJtiUbnp4zqJvaGV1RsiIurdQuq5ufrqqwN+vaampivXEtfCXbmxO2ScrlEqN4NzkmHS62CzO1Df0obUhPD09BAREfVEIYWb1NTUDr9+8803d+mC4lW4e25K6lrQZpdh1EvIs1pgTTCgosHm1XcjyzK+OVOHAZlJSDZ3un+ciIioxwjp0+4f//hHpK4j7onKTUuYKjdip1R+WgL0OgkpFqPPcLPzRDW+t3Qr5o/tg+d+MDEs35uIiKg7Y89NlIS7ciPCTUF6IgAgxaLkVM9ZNwdLGwAAe4pqwvJ9iYiIujuGmygJpXJT29yGy/66Cc+tO+z3OWKAX0FGAgBtuHGv3FQ32QAAp2ubI3IqORERUXfDcBMloVRuPj9aia9P1WLJ2sNoafMdSE46Kzf9ROXGrDQRe1ZuKhuUcCPL3sc1EBERxSOGmygxi8qNn7CiVdWoBJLmNjs2Harw+RyxDbwgw31Zqs6jclPV2Kr+8/EKhhsiIop/DDdRkugMN4224MMNAHz6TYnP54gBfgXpYllKVG7cw02l5r2OVzaGcMVEREQ9E8NNlFids2fqgjjcUiwlAcDqb8u8pg63tttRWt8CwLty47ksVcVwQ0REvQzDTZT4a/j1RbuUVNVow84T1W5fP13TAlkGEox6ZCaZAr6/NtycqOSyFBERxT+Gmyjxt2zki1hKSjQpS1mf7nNfmlK3gWckQJIkAFBPGtdWbmRZdluWOlbByg0REcU/hpsosYqG3+aOl6VEteXycfkAgE++KYEsu5am1GZi504pwHflptFmh63dtTvrdA23gxMRUfxjuImSFB+VFX9EuLlyQl+YDToUVzVjf0m9+nW1mThDG268K0NVzt4ds0GHJJMeDtn1WiIionjFcBMl1gTfW7U9aZeS+qYlYNbQbADAp/tKAQA1TTZsOFgOAOjn3CkF+G4ornT27mQmmTAgMwkAcIJNxUREFOdiGm42btyIyy67DPn5+ZAkCStWrOjwNevXr8fEiRNhNpsxZMgQLFu2LOLXGQ6+emJ80S4lZSabcNGoXADKlvCT1U343tKt+PZMHVLMBlw0Mk99na9lKTGdOCPZhIFZSrg5zqZiIiKKczENN42NjRg3bhyee+65oJ5/7NgxzJ8/H+eddx727NmDRYsW4Y477sAnn3wS4SvtumB3S4mlJItRh0STAReMyIFOAvadrsMVSzbjcFkD+qRa8O4909E/03tZqsHWDodz67jYUp6RZMYA53OPs6mYiIjiXEingofbJZdcgksuuSTo5y9duhQDBw7EE088AQA466yzsGnTJjz11FOYN29epC4zLETlpslmR5vdAaPed650LSWZlf9NNmNyYQa2HatCZaMNI/JS8I/bpqBPaoLb60R4kmUl4FgtRrV3JzPJhEK1csNwQ0RE8a1H9dxs3boVc+fOdXts3rx52Lp1q9/XtLa2oq6uzu1XLCRbXDmyIUD1RgSSDOf8GgC4ekJfAMDMIZl45+7pXsEGUA7mNDkDk6gOad+rMJPhhoiIeoeYVm5CVVJSgtzcXLfHcnNzUVdXh+bmZiQkeH/oL168GL///e+jdYl+GfU6JJr0aLLZUd/SjnRNeNGq9BFurp1SgCkDMzAwMwk6neT3e6RYDKhstDn7ehLc3qvQuSx1qroZtnYHTIYelWuJiIiCFvefcPfffz9qa2vVX8XFxTG7Ftfhlv6birVLSYIkSRicnRww2Gjf37Nyk5lkQnaKGYnO7eAnq9lUTERE8atHhZu8vDyUlpa6PVZaWgqr1eqzagMAZrMZVqvV7VesiKbfYMJNhp/KTjDvL3ZkaSs3kiSp28G5NEVERPGsR4Wb6dOnY82aNW6PrVq1CtOnT4/RFYXGNaXYf8+NusMpuTPhxrNy42xOdr7XwCyxY4qVGyIiil8xDTcNDQ3Ys2cP9uzZA0DZ6r1nzx4UFRUBUJaUbr75ZvX5d999N44ePYpf/vKX2L9/P55//nm88847+NnPfhaLyw9ZMFOKqzSD90J/f/dBgWJbeXqi8l6s3BARUW8Q03CzY8cOTJgwARMmTAAA3HfffZgwYQIefPBBAMCZM2fUoAMAAwcOxP/+9z+sWrUK48aNwxNPPIGXX365228DF4KZdeNaljJ34v1d4amlzY5Gm3KOlNhWPjCTg/yIiCj+xXS31Jw5c9wOhPTka/rwnDlzsHv37gheVeRYEzruufG1WypY2vAkphMbdJJ69AMH+RERUW/Qo3puerpQKjedW5ZyVW5E7066s5kYgHoEw8nqJrfTwomIiOIJw00UdXS+VEubHU3OpaTONBRbNeHJV0jKTjEjwahsBz9Vw9PBiYgoPjHcRFFHu6XEkpRRLyHFHPqKYYqPcJPhMS+HS1NERBTvGG6iSF02avVdualqcJ9L0+n3b2nz27szsAtnTB0uq8cdr27Huv1lIb+WiIgoWnrU8Qs9nWjs9V+5UbaBi63boXKv3PjeUt4/Q6ncnKwObVmqqLIJP3jpC5TVt6KlzYHzRuR06hqJiIgijZWbKOpozo3aJ9OJfhv392/3u6U8zRmcapr879jydKa2GT94+XOU1SuBqbSupVPXR0REFA0MN1Fk1YQPX7oy4wZwP7vK36TjtETlGmqbgws3FQ2tuPHlL3Cyuhnpztcy3BARUXfGcBNF2vDha75PZRe2gWvfv6G13e97pSWIcGML+F5ldS1YvvU4rv3bVhwpb0SfVAv+edfZzutvR7NzVxcREVF3w56bKBLho80uo7XdAYtR7/Z1bUNxZ4jKkCwDxVVNPt8r1Vl98bcs9cm+Erz82VHsOFENkb+ykk14445pGJiVhESTHk02O8rqW9TjHIiIiLoThpsoSjIZoJMAh6xUbzzDTVemEwOA2aCDUS+hzS6r/TFe4SbB/7KULMv4+TtfoqFVWTYbX5CGS0bn4aqJfZGTYgEA5FotOFbRiNK6VoYbIiLqlhhuokink5BsNqCupR11ze3ISXH/elcOzQSUOTYpFqPauwN4hxu1obhZWRrTbjlvbrOrwWb9L+agMMs7vOSkmJ3hhn03RETUPbHnJsrE+VK+dkz5GrwXKrH0BQCS5L2tXPTc2NodaGlzP4JBfH+TQacO+/OUa1UqOAw3RETUXTHcRJnYrl3nY8dUZRe3givv7wo3aQlG6HXuwwATTXoYnI/VeDQViz6c9ESj3yGCuVZlJ5dY9iIiIupuGG6izDVoz71yY2t3qFvEO7sVHABSzEb1n31VgCRJ8rsdXFRuAg0RZOWGiIi6O4abKPM366a6SQkWOsm1dNQZ2spNpp+QJJqKPXdMiWsIFG5yGG6IiKibY7iJMtfhme7BQgzdS080QacL/VwpQSx7Af57d/yGmyB6fnJTnMtSdVyWIiKi7onhJspcDcXulZtwNBMD7pUbz+nEgtgx5Rmwqp1hRyxb+cJlKSIi6u4YbqLMX8+NODSzq+HG6rYs5SfciMqNR0OxWJYKdA05zobiRptr2zgREVF3wnATZa4jGHxXbrqyU0p5/46Xpax+e25E5cb/NSSaDOrPEMnqzfGKRqw7UNbp17fZHR0/iYiI4hLDTZRZ/ZwMHpFlKX+VGz+7pVw9N4EbmtWlqdrIhZuf/HM3bvvHduwvqQv5tUvWHsLYhz/F5sMVEbgyIiLq7hhuokydc9PsXrmp7OKJ4J7vr7xXR8tSvndLBarcAK5ZN6X1kQs3xdXK2VgHSupDfu2mwxVobrPjgRV7YWtnBYeIqLdhuIkya4LrZHAtcWhmZ49eEIKp3IjDM2v97ZbqKNykiKbiyOyYcjhktapUVNkU8uvFctvRika8tvV4OC+NiIh6AIabKEvxM+cmEstS/ubcpCUo38NrWUqdUBz4GiI966a+pV09kVxUcEKh/bmeWX0I5RGaptxud+DHb+zE8+sPR+T9iYiocxhuoszVUOx7t1TXKzeuZal0P70zonKj3S3V0mZHc5s94OsE9QiGCFVutNdVVNX5yk1+qgX1re144tMDYbs2rf0l9fjw6xI8veoQWpz3joiIYo/hJspEQ3FDazscDll9XK3cdHG3VN+0BGQmmTAq3wqzQe/zOb6G+Il+G4Pz5PJAIj3rRntdxVXNIb1WG9IevWoMAODtHcXYe6o2fBfoJOYE2ewOfHUy/O9PRESdw3ATZaJyI8tAo01ZmrI7ZLW5t6vLUgkmPTb88jy89+OZfp+TphkkaHcGLPVcqSST30MzhUg3FGsbnU/XNofUFCwCh04CZg/LxhXj8yHLwO/f3wdZljt4dWi02/m3H68K63sTEVHnMdxEmcWoh0mv3Hbx4Xi6phmyrFRNOup3CUay2QCTwf8fbarm7CoRBrQngnckR9NQHO7AoFyLa1lKlpX7E/Rrm12zenQ6Cb++ZARMBh22H6/GkfLGsF6ndjs/ww0RUffBcBMDYseU+HAUSybD81Jg1Ef+j8Sg16lLTyIMiMpNR9vAAdeUYlu7w6spORw83zOUvhsR0kR1qk9qAvJTLc6v2fy+rjO0lZudx6vVKhgREcUWw00MeM66+doZbsb2S43aNbj6bmxu/9vRNnAAMBv0aoWns9vBvz1Th/OfWI8Pvjrt9TXPycmhhRvl50jVVKCS1SMvwntchLZyU9/a3qmZPEREFH4MNzFg9ThfSoSbMX3TonYNnlOKqxqdy1Id7JQSutpUvP5AOY6WN2Llno7DTSjbwT0rNwDUKlV9mM/C8gxLXJoiIuoeGG5iQDvrRpZldafNmL7Rr9yIcCN2SwXb89PVWTdiK7xYDtMSW8FF43JxKJWbZu/lNXG/GyJUuUlxhqd4DDfNNjsWf/gtdp6ojvWlEBEFjeEmBrSzboqrmlHb3AaTXodheclRuwZRuRGVjlDDTW6Kc9ZNJwfkiUbmygbv14vJyaKS1ZmeG23TtAgfnud5dZWo3MwalgVACTeRaLCOpfUHyvC3jUfx1KqDsb4UIqKgMdzEgFVTufnqVA0AYESfFL9zaSIh1WNKsTqdOMit6F1dlhLNuJUNvio3ItwolaxQZt24dktpwo0zTDZEaFnqnCHZMOollNa14mR1aHN5ursqZ+itDnMzNhFRJDHcxIC2cuPqt4nekhTgPchPnCsVzFZwQDPrprPhxhlC6lvbvab7iqbgMf2sAJQA5nkOlj+1vnpuItxQnJ1iVv/8th2Lr6UpsZQX7mBIRBRJDDcxYE1w7Zb6+mT0d0oBmmWpZvf/Mg+2cuPquenkspRmiciz70ZUk/qkJiAr2dl3E2RTsa+em2Sz7/O8ukq8X4rFgCmFGQCAHSfiLNw4Q024+5WIiCKJ4SYG1MpNs6tyMzrKlZs0NWB5Vm5CW5Yq62LlBnBfmpJl2bXjKdGIgowEAME3Fas9Nz6XpcLbc1PnI9zEW+VGBLhw7zQjIookhpsYELt39p6uRX1LO0wGHYblpkT1GrTLUq3tdjTalKWhYObcAJrDM+tb3c7ICpZ2AF5Fo6v602izo935fmkJJvTPSAQQfFOxr63gKRFelrJajJg0IB0AcKS80WeTdE8l7pmt3YHWdh4OSkQ9A8NNDIg5NycqlQ/skX2sUZlMrOU6GbxNDQQ6yRUEOpKVbIYkAe0OWW06DYW/yo3otzEZdLAYdSGHm1rN8QtCJBqKlQ975cwrq8WI9CQThuUqu912xNG2aW21i0tTRNRTMNzEgKjcCNHutwGUqgighAHtNnCdLvChmYJRr0NmUueailva7GowANy3g2srL5IkoSBdCTfFQexCarM71ACjbYyORM+Ndlu5aFie7Fya2h5HS1PaQMimYiLqKRhuYkCcLSVEu98GcFVuapvaNOdKBbdTSlCXpkJsKvYMGZWahuJaj63cBc7KTTA9N+K1kuQeINUJxWENN8p7JZn00DsD4fiCNADA/jg6hkFbrQn3sh4RUaQw3MSAtVtUbpRrsNkdOF2jVF4ygtwpJXR21k2dxzA992UpUblRrqV/phJuTlY3dXgwpXit1WJUAwcQmYZi104p159l3zSl+bmkk03W3VE9KzdE1AMx3MSAtq/FYtRhSHb0JhMLiSY9jHolAByvaAQQ3IngWnnO07aPOl8frDqPU78rNQ3Frq3cSmjIs1pg1Etos8sdhqjaZt8VKHG/W9ocaLM7vF7XGSKgaf8sRdgrqY2jcKOp1rDnhoh6CoabGBDLJAAwKj8Vhig3EwOAJEnqlOJjlUo4CXanlDBtoNJjsubb0pBeV+sZbnxVbpwBRa+T1IpIR03FvnZKAe73O1wf0PU+wo0Iew2t7XFT5dDer3j5mYgo/jHcxIBBr0OSSTlqIdqTibVSnb0/x8qdlZsgTwQX5gzPgUEn4Uh5I46WNwT9OrENPNF5D7QNxb52OxUEuWPKNePGPaQZ9DokGJXvFa6+kTofy1LJZoMapOKhetNud6BZMz2as26IqKdguIkRMaU4luFGBIgTnazcpCYYcfagTADAqm+Cr96IZanCzCQAQEWjTT1wUmwF1x58GWxTsXquVIJ3SFOPYAhT3412OrGWqN509liK7qSx1X2uDZeliKinYLiJkSmFGUixGHDO0KyYXYMIAWKAX7DTibUuHJkLwHe4abbZfQ5+E/0qA7OUcGNrd23h9lyWAqDOuukw3DT53/WlNhWHfVnK/XvlOftuzsRB5cYzCIb7VHUiokhhuImRZ64bj+2/nas2ocZCqkeFI9hzpbTmOsPNzqJqVGiWlxpa23HJMxtx/l82wNbu3sRb16wEjFyrRbM0pQQTV/XFdS3BDvLz13MDAClh3g4u3sfqUbnp6mnp3Ylnjw17boiop2C4iRFJkmBx9oHESqpHhSPYE8G1+qYlYFS+FbIMrP22TH38xY1HcbyyCadqmr0+6EXlxppgQGayEmLEjqlaH5UbMcivqKop4FEPIhh59twArgpLuD6gfTUUA0BeqjL7Jx56bjyDIJeliKinYLjpxbTVEaBzlRvAtTT1qXNpqqyuBS9tPKp+vdzjrCXRc5OaYFSnHFc0uJ9Orq0qFWYlwmTQoaLBhnve2Ikmm+8PWXVZylfPjVq5CXfPjceyVGr8zLrxDDNsKCainoLhphdL9ZiU3JmeG8AVbjYdLkezzY6nVh9y22VTUe8RbtQlHSOyROWmQWkqrmn2rtykWIz48/fGwqTX4ZN9pbhm6VacqfU+jkHstEr3sevL1VAc5mUpj3uY1wNn3fz3y9N4ctVBtalb8LxXrNwQUU/BcNOLabdbS5J3D06wRvaxom9aAlraHPjHlmN4e3sRAKCPc+eQ9ngFwFW5sWoqN5UNrWhpc6j9OZ4DBa8Y3xf/vGsaMpNM2He6Dpcv2Yy9p2rdnqNuBU/wtSwVoYZis++G4p5UuXn4v/vw7JpDOFTmvp1f3CuTcw4Te26IqKdguOnFtD03qQnuRxaEQpIktXrz508OwCEDF43MxSznTjDvyo04JkHbc2NTpxMbdJI6B0hr0oAMrFw4E8NzU1Be34oHVu51+3rA3VIRaij2txW8oqE1bNOQI6nd7lDPFvP8cxLHVWiHExIR9QQMN72YtlIT6owbTyLcyLIyVfiXF49AVrLop/HsuRFLOkZkOp9T2Whz2wYuSb6DVr/0RCy9aRIAYN/pOvW8KbtDVpe7fO6WCnNDsa8hfgCQmWSCUS9BloHy+tAOFI2FGs206Oom934kUbkR4YYHZxJRT8Fw04tpQ0CoJ4J7mjowQ90Wfe2UAgzJSXaFG89lqRbXspSr56ZVs6wU+FoGZCTCYtTB1u7AcecAQu15Vb5er/bchK2h2PduKZ1OQk5Kz5l1U635s6lq8vxzUsJMH7Vywzk3RNQzMNz0Ytq+llBPBPdk1Ovwy4tH4Lzh2bjvwmEAoC45aZc7Wtrsal+N1WJQv29lg01z8GXga9HpJAzLTQEAHCypB+CqQKSYDT7P6koO47JUa7sdrerP4B2kcq1KqOvKrJuT1U340fId2H68qtPvEQxttabGI4SKKpeo3ITz4FEiokhiuOnFtAPoQj0R3Jcbzx6Af9w2Va3YZPtYlhJVG50EJJkMrobixtaAQ/g8iXBzoNQZbsQWcj8VqBRL+MKN9j2SPSo3ANBHbAfvQuXmvV2n8Mm+Uvxj87FOv0cwqgJUbtRlKc2gSe6YIqKegOGmFzPodWqjbVcrN75kpbj6aQTRb5NiMUKnk9RlqapGm/o8fwFFa7io3JS6V278La+pu6XC0HMjwk2SSe+zCTs3DDumjlcq05hL6yLbt1PT5H0iuyDuVXqiCRYjd0wRUc/BcNPLiSDR1Z4bX0QFp6apTV3O0E4nBlyDAx2y6wBPz+GCvgzPc1ZunMtS6mRjP68NZ0Oxv3OlhHBMKS6qUu5FpI9x0FZrqjyWpcScG+W0c+Vnjcem4rqWNiz//ITb6fRE1LMx3PRyovm2q7ulfEnTbC8XZ0epM26cwcCo16nB6ki58oEezDEQItwcr2xCS5u9w2Up7YRiz2F1ofK3DVwIR+VGnKNVVtfa5esNRNtQXOO1LOVqmg5n5au7ef3zE3hgxV78TTNVm4h6NoabXk4s7wxzhoVw0ukkdblL9N1opxMLmc7nHClXhsgFU0XKSTEjNcEIu0PG0fJGzYGbfsKN88O5zS6rzcCd5W+nlCB6bjpbdWlps6vLUTa7w2u5KJy0DcWePTcixCW7hZvusWPqcFk9rn5+M9YfKOv4yR04Wa1Muz5V7T31moh6JoabXu6PV4/Bmp/PxsT+6RF5f89ZN67pxK5gkKlZvgJ8H3zpSZIkt76bGh8Hbmolm1zfr6tLK/5m3AiiAfdMbUunqi6ep5+X1kduaUpbualu9N1zk2I2hnW3WTi8/+UZ7Cqqwdvbi7v8XlXOqqLnPCYi6rkYbno5i1GPwdnJEXt/0TAsDsZ0TSc2ej1HCGa3FAAMy1Ou+0Bpvbqk4u98LJ1OUj+gu7q04jpXyvd15ji3gtvaO1d1OVHpEW4i2FRcranWNLS2q9v07Q4ZTTblfLBkiyFs9y5cip0BUCx3doU4kd6z54iIeq5uEW6ee+45FBYWwmKxYNq0adi2bZvf5y5btgySJLn9slgsfp9PsSUqN5Vq5cY7GIjt4EKwzc3DNbNuapo7HgAYrvOlOlqWshj1at9QZ/puRGO1EMmmYs+pxCIkakNMklmvGYLYPcKNqG6Fo9oiApLnGWhE1HPFPNy8/fbbuO+++/DQQw9h165dGDduHObNm4eyMv9r6VarFWfOnFF/nThxIopXTKFwVW5Ez4135SbTq3ITXHOzmHWzv0S7LOX/tdqm4q7oqKEYAPLErJtOBJNij2WpsgiGG89qhQg7ItyYDDqYDXp1ZEB3mXNTXK3co/IwhBvxd7O6yaYe50FEPVvMw82TTz6JO++8E7fddhtGjhyJpUuXIjExEa+88orf10iShLy8PPVXbm5uFK+YQuHqufHYLeWj50YIZs4N4Ao3p2qacapGaQYNVPVRqw9dXpbyDmie8qyd3w5+whluxL2L1LJUu92hhk1x30TYESFGhJrkbrRbSttwXd/SjpY2e6ffy9buUHuoZNl7xxgR9UwxDTc2mw07d+7E3Llz1cd0Oh3mzp2LrVu3+n1dQ0MDBgwYgIKCAlxxxRXYt29fNC6XOiHTs6HYx26pLM0AQZ3k+kDtSHqSCTnOQYHikMpA/TqiAbirSyvBVW6c28E7EW6KnD03UwcqTd6RWpaqbW6D6HcuzEwC4Ppw91x6C3bOzU/+uRtXP78Z7RE8puFktXtlqyvLSdUeYYZLU0TxIabhpqKiAna73avykpubi5KSEp+vGT58OF555RWsXLkSr7/+OhwOB2bMmIGTJ0/6fH5rayvq6urcflH0eDUUq5Ub7bKUq3KTmqBMLg7WcI8t7IGqPq6llcgvS4lZN6EGE7tDVpdcJg/IAACUReh0cbEEZbUYkO0MiWI7uDrAz+JZufF/72ztDrz/5WnsKqpRJyxHQnGV+5btii7cH8+enXA0KBNR7MV8WSpU06dPx80334zx48dj9uzZ+M9//oPs7Gz87W9/8/n8xYsXIzU1Vf1VUFAQ5Svu3by2gre4PlAFbc9NqGdciaUpIaiG4jAtS6WY/X8vcZJ2qD03Z2qb0WaXYdRLGFeQBiByPTeiapGeZFIboKs9lqVEn5I1iHun7X8pi+D2dc+t8l1pKvYMM2LnFBH1bDENN1lZWdDr9SgtLXV7vLS0FHl5eUG9h9FoxIQJE3D48GGfX7///vtRW1ur/iou7vpcDAqeCDdVjTY4HLLP3VJZSe6Vm1BoKzeJJj3MBr3f54ZrVksolZtQl6XEB3e/9ETkpynvUVbfCkcEGl1FkElPNKnHYHg2FIvlqOQgGoq1Iaw8QtUmIMzhxiPMcDs4UXyIabgxmUyYNGkS1qxZoz7mcDiwZs0aTJ8+Paj3sNvt+Prrr9GnTx+fXzebzbBarW6/KHpEVcbukFHT3KY5W8oVYqwJBhicS1GhnnE1XFO56Wg+Trgaius6OFsK0PTchFh1Ef02/TMSkZVshiQB7Q7Za3qwlizL+OuaQ3h1y/GQvpdauUk0qvOBPCs3rp6bju+ddvksGuFGrF5WdGEpybNy05X3IqLuI+bLUvfddx9eeuklvPrqq/j2229xzz33oLGxEbfddhsA4Oabb8b999+vPv+RRx7Bp59+iqNHj2LXrl248cYbceLECdxxxx2x+hEoAO3ZUaeqm9UhcdplKUlyHdMQ7AA/YWiuawBhR5ONw9VQXBdMQ7GzclPT1BbSbh6xU2pAZiKMep06AyhQ786mwxV4YtVBPPz+PjSGENyqnBOJ05NM6tli1Z49N567pQJVbupbff5zuImt8mJJsitByrOBuIrLUkRxIbhtKRF07bXXory8HA8++CBKSkowfvx4fPzxx2qTcVFREXQ6Vwarrq7GnXfeiZKSEqSnp2PSpEnYsmULRo4cGasfgTqQlWxGTVMbjlYoZ0fpJCDJ5P5XLzPZjLL61pB7bhJNBvTPSERRVVOHwSgcDcWt7XZNQPP//VITjLAYdWhpc6C0rgUDnLuROqKt3ABArtWMioZWlNW1YlS+79f8bYNy4KMsK/NfRuQFV50UO6MyNMtSVc5lKc/dUilB7JYq1wSwSPUJybKshpuJA9Kxv6S+iz03ymtzUpS/f2woJooPMQ83ALBw4UIsXLjQ59fWr1/v9vunnnoKTz31VBSuisIlM8mEw3Cd+p1i8d4RJXZVhdpzAyj/BV9U1dThklY4Goq1H+7JASo3kiQhz2rB8comnKn1HW6qG22wy7LalwQAJ6qUe+QKNxbsO13nt3Lz9clabDpcof6+qDL4cCP6S7QNxeqE4hbfu6Wa2+xotztg0HsXfaNRualqtKHReSzE+II0vPlFUZcCiXjt0NxkJdyw54YoLsR8WYriX5Zzm/FR56nf2gF+gpizUuD8UA/FyD7K8oTYzuxPOI4QqNfsItJ3sGU90HbwdrsDl/51Ey5+eiNqndUSWZbVc6VEGMq1Bh7kt3TjEbffezbbBiKah7UNxeoQP/XQTOWeJZldjdqNrb6X2aLRc1PsPLk7z2pB3zRlCnRXKjcVzp9XLHFV8vBMorjAcEMRl+2sTByrUKoSvpZzfn7RMCy9cRIuH+dn7SWAm6YX4u7Zg3H7OQMDPi8cu6U6OldKSzQVn67xDjfHKhpxqqYZFQ02/HuXMqOptrlNvTZRuclJcQYkH1urT1Q24qOvzwAAzhueDcD76IZAfDUU17e0o83ucO2Wcv6cZoMeJoPyr4t6P7NutNu/I1W5EeFNNFwDXd0KrrxWhJvesltq3+lavP/l6VhfBlHEMNxQxGU6qwKBwk1aogkXj85TP0BDkZ1ixq8vGdFhX4urobjzPTfBbAMXBmYp13OorN7rawdKXY+9ua3IrWqTk2JGgkmplIjqj68elpc+OwqHDMwZno2LRimjE0Kq3GiWpVITjJCchaiapjZNhUqzq62DZb0yTXWptjm0RupgifBWkJGoLmVWN7WhrZMTkas8Kjc1zW1hna5sd8jdshq06K09+Mk/d+NQqfffTaJ4wHBDESeWpZqcvRK+lqWiQdtzI8udmxtTH8Q2cOGsPkrvy7dnfISbEtdjh8sasO1YldtOKcHfslRFQyve3aFUfO6ePVit9IS2LOWac6PXSWq/U3WTTTPnxvVnFWjWjd0he1VQIrE05Qo3Cep1A52ruDTZ2tW/k0OykyFJSlO250npXfHrf3+FyY+uxrdnutdkdDEFW5zJRhRvGG4o4rI8DsYMtMsokkS4cchKY2xnBLMNXBjpDDeHy+rVHVbCfme4ET0tb3xRhKJKpbKl7Tvy17fz6pbjaG13YFxBGqYNzFDDTXF1c1AD/8TcIQBIT1L+PDI0s258Lb8FmhNU2dgKhwxIkms6czhO7PakXZbS6VwjBDoTpEQzscmggzXBoC7NBQpKdoeMu17bgcUffRvU9/jqZC1kGfjiaGXI1xcpzTY7WtqUv4+1zeELckTdCcMNRVxWsvv2bmsndkSFQ4JRrw5+62zfjWtZquOfoV96AlLMBrTZZRxxNlMLonJz79yhAICP9p7B7qIaAMCADNfymjgYtKKhVV0ukWUZb29XJm3ffe4gSJKEPqkW6HUSbO2OoPpd6jSHZooPddeUYpvXED8gcOVGhIvMJLPaa1QWgdPMteFG+X7i7LJOhBtniMlKMrnNWgq0jHSorB6fflOKv392LKgQKapjR51Lst2BdipzdS/pMaLeh+GGIq67VG4kSepyU3EoDcWSJGGEcyeXdlmisbVd/ZC+akJfjCtIQ5tdxpr9ZQDcl6Uyk83QSUq1SXwYHyxtQFl9KyxGHc4/KwcAYNDr1N1DwSxNiYnHKWYDjM5t3WI7eEWDa7u1+7KU8nVfPTciUOWkmDUntYd31k2b3YHTzmUUEW6y1fAX+oe0CDHi4FYRlAJtBxfLg+0OucOqhyzLqHEucR0t7z7hRluZqmHlhuIUww1FnFe4iVHPDdD1puJQGooBbd+NK9wcdDZxZiWbkZlsxg3T+ru9pr8m3Oh1kvoBLpamPjtUDgCYOjDT7SytUPpuajSHZgqignOy2tWHoZ3lk6Jupfe+d+XOD/0cq1m93nDvmDpT0wKHDJgNOvV7dGXHlFiWEkeEiP8NVLnRLg92tOzWZLPD5qy2HfWo3MWSNrzVhLG/iKg7YbihiEsw6ZFkcn0Ix6pyA3R9kF+9eqp5cD+Dr6ZiEW5GOA/9vGxsvltYGuAx68e1Y0r5MN3sHNo3a0iW2/MKQgg36tELmsGHIuiIZlOTXucWngItS4lt4ErlxtlzE+ZwU6TZKSU5t3aJJc+KzvTcOD/kxXJURlLHPTelmoNQO/qe1ZrzwE7XtqDZFv7dY51R1aANN1yWovjEcENRkamp3sSq5wbQhJsu99yEXrkRO7REM7E40TzBpMd3J/YDACSZ9OqHrKCddWNrd+CLY1UAgJke4UZtKg4i3Gi3gQuiciNe7zmBOVBDsWtZyqIuS4W7cuPZbwN0tXLT6vYe4hyvikDhpj74yo1nVeRYN+m70Ya3cO4MI+pOGG4oKrRNxdYgg0EkdLXnpi6EnhtAObVcJylVAlHJOOARbgDg5ukDkGI2YNbQbLUqIWi3g+8uqkaTzY6sZJNa+RHEh/6Jyo4/RLXbwAVRxREhQttvAwQOhmWaZakcqwg34e25ERWlgvQE9TERTDpzbIJ4jei1EctSVQH6d7Rb8juqTFV7VEXE2WqxVsmeG+oFGG4oKrK6SeUmWfTcdHpZShxLENzPkGDSo9A5zO8bZ9+NCDfacDIoOxlbf3MBnrthotd7aAf5iSWpGYOzvM7ncvXcuM8uqWmy4fGP96vNuICrodgt3Dg/5EXFwSvcmP0v6Ykgk51sRnZyZHZLaZelhCy1eTn071Xh1VAsgpL/99IOU+yoidmzKtJdmoqrG7ksRfGP4YaiIiule4SbQE2xwQh1WQpw77spdx7OKEnA0Bz3you/86pclZsWfOYMN+d4LEkBrnBT0dCKJpsrgDy75jCeX38Ej3+8X32sxtlzk5Hk+rPwXA7z/BmTA/QrqctSmspNZaMN9iC2Swer2OeylNgK3pndUu4NxRkh7JYCOg5UnsGhuzQVs6GYegOGG4qKLM0HZ2dO/g6XlABNsQBwqLQeP3/nS7/9EWpDcQg/w0hN342o2gzISFSPWOhIjrNyc7i8AV8W1wAAZg71DjepiUZ1ya9YU71Zf0DZYr75SKXa9yMqN2k+lqUEr3BjFjvN3O+dLMtuPTeZSSZIkjLwLpxnNanhJtO756aqsdUtSH289wwe/3h/wFk0VeqcG7HzKnBDsd0hu/XZdNTnU60GSOV9u8usmypNZaqupS2sAZSou2C4oagQlRudBLedU9EWaLdUs82OHy3fiX/vOokX1h/2+npru12dbRJKQDtLM+tGnCk13KNfJpBcZ0NxcVUzHDIwKCtJnWnjSZyvJZZwiiqb1A/V8vpWHCpTqgfVHjuFAPclKsB7WSrZz7JUXXO7OoE5O8UMg16nLvGEq++mrqVNXeYpSHeFG3H9DtnV42J3yPi/f32F59cfwc6iap/vJ8uyuvyU4VG5qfFzVlVlg3uACrbnZmL/dADAsfLGTh/7EU7a8CbLnFJM8YnhhqJC/Be2NcHo1TAbTYEaiv/y6QE1CGxz7kjS+rK4Fm12GVnJZvWIgWCM7JMKQPkv969O1gAAhudZg369WJYSzvFRtRE8Z91sOFjm9nXRs1OtVm5cIc0zsHnulvK3pCcCjNVigMWoBNdw75gSVZvMJBOSNKHLqNdphg8q3+ub03Xqn29Rpe+dY3Ut7Wizy+p7AkoVS6wKejYDA77P9wpELEuNL0iFTlL6vCJxJEWoPJfd2HdD8YjhhqJCNMVmeFQHos1fQ/G2Y1V4ZfMx9ffHK5u8znMS5wNNG5gRUkDLtZqRnmiE3SFj9TelAOC10ymQ9EQTjHrX9/PcAq5V4LEdfP2BcvUaAGDLEeVnEFUQbeXGoNe5BZxkj6Zpf3NuXP02rsCX3YVGX19ESCnwmAEEaLaD1ysf0l8cc53j5O9gSLENPNnsCmR6naRWryp99PCIvw/iZ6tstAVc9hL3OMdqQT9ntSnWTcW2doemKV758+R2cIpHDDcUFRMK0vCT84fggUtHxvQ6fFUfGlvb8Yt3v4QsA9+f3A+j8pWqimf1RsyXmTYoI6TvKUmS2lQsjjUIZVlKp5PUWTc6CZg+ONPvc7WVm5Y2uxpmfjZ3GADg86OVaLM7XBOKPcKmtu/GX0Nxo83utjyjHeAn5IQ53Pg6MV3wnHXzueaQylPVfsJNo3szsZAZoO9GzLgRPVR2h+yzwiNo7/GgbGW5MJrhxtfSq7heneTqXaptZuWG4g/DDUWFTifh5xcNx3kjcmJ6Hb4aih/7eD+KqpqQn2rB7y4diakDlfCiDTdtdgd2nlD6N6YN9B8u/BHhBlBOofacQtwRUS0YV5AWcDqyNtzsOF6N5jY7clLM+N6kfrBaDKhvaceWI5UQ2STNo4lYO9TP35wbAGjU7MYq15wrJaizburC03Nzwlm58XXfsjSHi9odshpCgUCVG/cZN0JGgIM4xbJU3/QEt3O4/BEVkfREIwZmiXATnR1T6/aXYczDn+DFjUfcHhehLT3RpP6sovG5N2myteOtbUVhn6JN3QfDDfUq4mypkroW/PydL3HeX9bjta0nAACPfW8srBYjpvkIN1+drEVzmx3piUYMzUkO+ftqw83QnGQY9KH9Xy8/Tanc+NoCrqWdUrzOuUtq9rBsGPQ6nD1ICWUffHkagBJetMcrAO7Lhp6VG7NBD5PzurXh0DXAz7UsJSpN4eq5KapSKh79M5O8viZ2OZU3tOLbM3Vu/VQnq3333KjNxEnu/UyiEdpX5UYEtTyrJahlt2rNjrRB2crfmWjtmNp8uAKy7FqGFKo0jeRip1xvHOT3zvZi/Po/X+OZNQdjfSkUIQw31Ku4lqXa8e9dJ9Ut3z89fwhmDc0GAEwpVMLNgdJ6dVeR6OOYOjDDa3heMMSOKSC0JSlhwXlDcNPZA3DHOYMCPq9PmgV6nYTWdgdW7D4FAJg9XPm5RK/OJ/tKAHhXbZTH/FduAN+zbsp8VG7C3XOjVm4CLUvV29QlqWG5Spg4XdPisy9GVG6y/CxL+eq5KXGGm1yrucNjH9rtrt6W9EQjBke5cnPceb9OeizLac/TSnP2V/XGhmKxa/BIWffYnk/hx3BDvcqAzERcM6kfzh6UgQXnDcY/bp2CPQ9eiPsuGq4+JzPZjCHO6sz240r15oujzn6bTixJAcCQnGQYnKEolGZiYVR+Kv5w5Wik+ggkWka9Tq3yVDbaoJOAWUNEuFGuvc75oes5tE95TNNQ7GNQoa/dZup0Yh89N9rKjcMh48Ovz6gHhwbL1u5Qpyv7XJZKdi0lfe78c7pifF/oJMBmd/gMIJXqdGLfy1K+BvmVaipUHYU3bTUkNcGoVm6Kq5vVbfOeTtc047oXt+JTZ/jsCnEEx8nqJrft51Wan1ssrfXGQX5iufJ0re9ly3B6ZvUhLHhzF1rausfBqb1F7A75IYoBSZLw52vGdfi8qQMzcLisAduOVeH8ETnYcbxzzcSC2aDH6L6p2FNcg/EF6Z16j2D1z0hUh/hN7J+uBqLB2cnISTGrgSPNx8417WO+jpjwNetGvJ97uBHLUi2QZRmSJOH1L07gwZX7ACjLa7fNLMR5w3M6rISdqlHm+yQY9W7fQxBVlLL6VpxyLkOdMyQLb3x+AqdrW3CyptltyQxwHY6Z6bksJc6q8hGIxLJUboqlw8qNqIZYLQYY9DrkWs1IMunRaLOjqKpJDc9ab28vxudHq9DQ2o6LRuX5uRsdczhkdRRAS5sDFQ029b5pl6VSnX/WgZqi45WoaJ1xVvY6U40Nht0hY8m6Q2izy5g1JAvXTe0fke9D3li5IfJB7bs5XoV9p+vQaLPDajFgRAjzaTw9fe14/O2mSWrDcqRojyeYPSxb/WdJkty2kWf4qAJpqzk+Kzc+Ds8sFxWNFO+t4C1tDtS3tkOWZbzxeZH69U2HK3D7qzsw98kNfmfRCKIK0T8j0ecWfBE0DpTUoa6lHclmA0blW9HXecCm59IM4Doc02u3VJLv3VK2dodazdEuS/mbW6M2EzvfT5IkDMwOvDS1yzlwcN/pOtR2oZpSWt+CVk11SNt35FqWMquVm942xE+WZfWe+KvshUtZfYs6T+nlTce6xRDH3oLhhsgHEUD2nqrFmv1l6mO+zn4KVmFWEuZ14b/Ig6WdBTNnuPvutBmabeS+KjfareC+em5SzO5b6ZttdnVmUI5m2GCCSa8+t7y+FbuLa3CgtB4Wow4f/nQW7jp3EKwWA45WNOJ5H9OgtYp8HLugJXZLidaaKYXpMOh16mwZX9vBRUOxV+XGT7gRIcaoV2bhdLQsJXq1tPd4UJb/pmKHQ8aeohoAytTgz49Vej0nWMcr3MOiNtxVaU5CFz1Xva1yU9loQ0ubK/z521EXDtrDag+XNWDDwfKIfS9yx3BD5EOf1AT0z0iEQwZe3XIcQOf7baJtQIZSIchKNqkzewS3yo2Pnpv0ALulAO+GYtFvYzHq1DAjZKvbwVvx9rZiAMB3xvTByHwrfvOds/D8DZMAAKu/LQ14vlGgbeCA93ZusStMHFFxqsa7MuR5aKb6Xpr+HS0xwC8nxQKdTurwwM4azTZwYVCAys2hsga3wZJbj3Q+3IhKl6ANN5W+dkt1sefmwZV7cePLX/SYnhLPSt7pmvCMKwjme/190zE/z6RwY7gh8kNUb0TZvrP9NtF2/ogcXDYuHw9cOtKrlyA/LUGdueJ5UCbgCjwGnQSzwftfDyLwiAqA9sBMzyUj0VR8rKIR73+lbD+/XtNzMG1QBqwWAyoabOqSjC+BdkoBgMWodwtiarjxsyxld8jqwaHey1LKNde1tLs1/pZpdkoBHe8Gq/YxJNE168a7ciNmKImt9tpBhKE6XulZuXH9vtrnbqnOh5viqia8tvUENh2uwNYuXHM0eY4HOB3Byo2oCk0tzIBOAj47VIH9JXUR+37kwnBD5Ie2NybZbFAn03Z3CSY9/nr9BFwxvq/Pr/9wZiEKMxN9HuNQmJWEKYXpuHpiX5/9LUNzlJ1ey7eewLGKRteMGx+NvqIH5x+bj6HJZseg7CRMHuBqpjbqdbjgrFwACLhDKNCMGyHb2QMj+m0ATeXGI9xUN9kgWh88jwNJTTCqS4/a5ZqSWhFuLG7fz/M0ctf3UAKDdrv9YOeOKV8nzotw991J/QAA+0vqfTY1B0PcL7Erz9eyVEaSSQ1eDa3tPg8KDcaHX59R/7krgSyaPP8+RHJZSnyvaYMycMnoPgCAv3/G6k00MNwQ+TFNE24mO/s44sFN0wux/v/OU7cnaxn1Orx79ww8/j3fO8p+MK0/phSmo761HXcv34kTzg/SHKuvcKM8JmaKXDelwCswXTTSGW6+KfXZbCnLrp0/gaY6iwZf7Z9Tv3SxLNXs9t5iSSo90ej1Z6rTSWpFSzvrptRZoVHPSEsyQZLcTyPX8nW8hajcVDbavCo+ItxcODJHDSViW3uoRM+NCK/FzkqFQ3NcRGaSyXmIrbjezlVv/ucWbjp3vdEmwp4InhENN8737puWgNtnDQQArNxzWl3OpciJj39bE0VA/4xEdRmip/TbRJpRr8NzP5iI7BQzDpTW49k1hwC475QStNu2jXoJV0/s5/Wc2cOzYTbocKKyCQdLvXtRyupb0dLmgF4nqctMvojZPtqG6Xxn5abJZnf78HbNuPEOZIBraUo0HQOanhvn3weDXqdWfXwtTbmWpVyVmySzAaP7KlUlbcWjutGmLlVNKEhXl9W2Hq3w+/P6I8uy2nMjplmfqlbCXU1zm9p0nZ5kgl4nqUd5dOZ8qaLKJnx1slYNSHtP1XqdGN8diWUpMawzkstS4r37pidgYv90TOyfBpvdgdedU9EpchhuiPyQJAl3zhqEITnJuGJ8fqwvp9vIsVrw3A8mQq+T1F0nvubPaKs5F47MVasrWokmA2YNdZ+crCX6bfLTLDAGqJz97MJh+L95w3Hj2QPUxyxGvfo9tUsz+04rPQ9+G5SdfThnNI2mYvktVxPiAs26cS1LuS97XT1BCXj/3nVSfWx3sVK1GZSdhPQkk3owqufRCcGoaLCh0WaHJDmnaUtAa7sD5Q2tqHKGNavFoN5L144pVygpqW3BzD+txV8+ORDwe4mqzYzBmRiQmQi7Q8aO4/57pwCl2fnX//4qooGiI+LvgqjMRupaZFlWl6VE0L5jljJh/J/bi7ktPMIYbogCuGPWIKy+b7b6LydSTB2YgfsvGaH+PlDPDQBcN8X/8LKLRirb4z/9xle4UaoQYgeYPwMyk7DgvCFINLnv2Oqb7r1jShyl4a9BfGJ/pS9InM0FuCo3uVbvWT6+Kjf+Tl2/fHw+DDoJX52sxSHnpOZdJ2rcvu/ZAzMhSUrjcWmIB4+Kfpv81AQkmQ3Ic17vyepmzQ4x15+Vrx1T6w+U4VRNM17/4kTAD+D/fa00ic8fk4+zB4pqU+BA9sSnB/HW9mIsWRd4+3+kKDNunE2+znBT3dSGJpv3CepdVdvchkabsoNM9H+dPyIHOkn5O8NDOyOL4YaIOuX2cwbiuikFsFoMPpfthuYkw2zQYWhOcsADPy84S/kX/t5TdV79Dx3NuOlIP48dU9pTw/0tNV4yRglb6w6UqR96pR67pQD3Yx88+WooVl5jxhznWV//3qWc/SX6bUS4SU00qk3RoW4JF/02YmeZmPVzsrrZrZlYEDumtH1Dh509UjVNbTjiY2eX8n0asfdUHfQ6CfNG5arVpkBNxXaHjM8OlXf4vEiqbmpDs3PL+vC8FHV8QSSqN+LvXFayCRajckCtxahHobP3an9JaMeQxFpre8/Y6i8w3BBRp0iShD99dyz2PHiRz/CRY7Vg1c9m4+0fTQ843j4z2YzJA5T/il7lsTTV0YybjvRLczUVA1BPDdfuqvI0so8VAzIT0dLmwLr95Wi22dXzuHJTO67cyLLsqtz4mCX0XWfv0Yrdp2Brd2BPcQ0AYJJmJ9l00XcTYrhRK13OnWWucNekbn/Xhht1SrGmcnNEM4dn5wnfTcLaJanMZLNaBdt7qhZ1fvpuvj5Vq4a+o+WN6vb6aBL9NrlWM8wGvaayF/5r0TYTa4mG8Z60Jfy5dYcx+qFPujR/KdoYboioSwIFl/6ZiT6HBXq6aJSya+qTfaVuj5+oCjzjpiOes25E1SbQ7jdJktRtux/uPaNWbRKMerdBha6eG/dm3EabXR2572uW0Pln5SA1wYiSuhYs26Jsk08xGzBUc97UjMFKpSvU2TFixk2hqNw4Q2FxVbPryAlt5cbH+VKH3cKN7x4a0RA9f4xyn/qkJqAwUxl6uf2Y70C04YD7dN4v/DwvksTfAxE48v2MCwgHbTOx1vBcJVT3pMrNJ/tK0GaXe9QQQoYbIoo50Xez7XiVOmgOAIrUc6UC99z44znr5gtnWOho99t3xNLU/jIcd15DrtXstpXdX0OxuH6TQYcE53KEltmgx2XjlFDwzGplt9n4/mluIXGK86iPoqomr6FzgbjCoHflRkwnTncLN+4NxS1tdrfm6x0+ws2xikbsOy2WpFzHiXS0NLXhoNLDJJbzuro0JctyyLuzxL0Uy3Vil10klqVOVfup3PRRKjcHeki4cThkHHT2h60/UBbRs7jCieGGiGKuf2YiRvaxwu6Q8cYXyjbZupY29UO38z03zvOlaprhcMjYFuTp7mP6pqJvWgKabHa8u1PZ2eR5sri/ZSnt0Qu+BiECULfFi4bTCf3dT4pPNhswtl8qAGDL4eBDgFiWKswSPTeucKc9V0oQDc9iK/jR8kbIMpBo0qu/9zxn60PNkpQ2KIkt7L7m3dQ2tanLbwvPG+J8XtfCzUufHcWYhz/1ucvOHxHcxH3pm6bcp4iEmxr3nVKCWJY6VNaA9hCHJz616iAe/u8+OAIcVxJuxdVN6q7IdoeMlXtOR+17dwXDDRF1Cz+arWyT/dvGo6htalNPC89KNvk8xDMYYkmgtrkNO4uqUdPUhkSTHmP6pgZ8nSRJavXm473Kh2euR7jxW7nxs1NKa0JBmjrUD3DvtxHmDFMOPV2x51TAaxVqmmxqsBInwxeIhuKaZnVuT4avyk2j8jrRbzOyjxWDnWdhaZemZFnGit3K9Vw6to/b9xfhZt/pWq+TxjcdroBDBoblJuPKCX0hScCR8sZO7xiSZRnLP1dC8CshLJWcUsONe+UmEoP8/PXcFKQnItGkh63doVYFg3G6phnPrDmEZVuOq+MMosGzwvTvnSf9PLN7Ybghom7hsrH5GJ6bgvqWdry86ajaTNy/k83EgFIBSXXuCPqPc3fSpAHpAWfmCN9x9pOI4xVyPba7i8pNZaPN7b/ARbjx3CmlJUkSvjvRdTzG+II0r+d8d5ISArYcqVSDXiDifuWkmNUt8XmpFugkwNbuUD+kMnz03NQ4w4jYKTU4O1lt8taGm69P1eJQWQPMBh0uGeMebnKtFgzKSvLZdyOWpM4dmo20RBNG5Cl9J1908vTzb87UobjK1UcVbDhRe27Uyo17w3k4nar23XOj00kYmiuaioNfmtp0yDXUcdPh0Ac8dpZYkjp/RA5Meh2+OVOHb6IYrjqL4YaIugWdTsLPLhwGQPmv8T3O4XYDApwpFQyxBPGB8/BOUWHoyPiCNORrdkd5Vm4ykkzQSYAsQ92JBGiXpQI3Un9vUgEyk0yYMzxbDWDu152obqF/Z0dxh9crqgCFmvtl1OvQJ1X5+SvUhmLNnBv18Ezla6KZeEhOMiYVKtUk7Y6pfzn/q33eqDx1urHWtEHe825kWcaGg0oz8WznNngxQK+zS1OimiasDKK6pcy4ET03znDj/N+S2paAJ9MHcqCkHjf9/Qt86Vx2A4Bmm13tceqX5h3Oz8oLve9mwyFXQ/aWI9ELNyKATRuYgQvOUqqJ2iGUnpptdty+bDvW7vd9pEq0MNwQUbcxb1QuRve1otFmx7ItxwF0rXIDuP7rvN65nVt7ZlggkiTh4tGu6oR2GzgA6HWSWgWpqHeFG1flJnC4yUu1YPOvz8ffb5ni9zli+OG/dp7ssD+jyM/p6f08KgcZyd49NyKQHRGVm5wkdansy5O1aG23o7XdrvZbfG+S91EagKupeMPBcvVU9YOlDSita4XFqFOPPBAB84tOnkclwo3YMv/erlMdfpDWNHkP1ctJsUCvk9DukDu9RPbkqgP47FAF/rrWNZjwdK1StUk2G2BN8F5SHZ4XWuXG7pDdKjfbjlWhpS06c2dE5WZYXor6575i9ym/h63+c1sR1uwvw4Mr96E9ir1BnhhuiKjbkCQJP79oOACo26k7uw1c0C4LWIw6jO2XFvRrRd8N4L0sBbj6bso1fTfahuKOWIx69RRyX+aOzEF6orJtfOOhcr/PA1zbwL3DjfvvtQ3Fqc5rbG6zo8nWjqPOE8uHZKdgUFYSMpJMsLU7sO90HdZ8W4ba5jbkWS0+T5QHgJmDM2Ex6nC4rAF3v74TLW12dUnq7EGZ6jA7ETAPlTWEvPvmcFkDDpU1wKiX8OdrxsJk0OFQWQO+ORN4qUQsSWWnmNXr0OskdYpzZ5amapvbsG6/8uey5UiFGuhcxy5YfDaVDw9x1s3Xp5Q+phSzAdkpZrS2O9Thj5Fka3eo554Nz03BucOykZVsQmWjzWtrP6AM+vvbxiMAgHvmDA5q+TdSGG6IqFuZMywbkzUNtl0ON5qGzkkD0mEyBP+vvYn90zE4OwkJRj0G53ifoi76bio0/9UfTENxsMwGvbqz6q1tgZemPAf4CdrKTaJJr36wA8o5UyJc7TtdB1u7AyaDDn3TEyBJkjo1eefxarWR9OqJff0GssxkM168aTLMBh3W7i/Dna/twKpvlNlFs4dlq89LTzKpu4ZCrd6I3VEzBmehX3oi5jqXSt7bFXhpynNJSuhK380ne0tgc1Ywmmx27HAu4flrJhZEz1FxVTMaWjs++mGjc1lvxpBMdalycxT6bo5VNKLdISPFbECfVOV8tyvGK71ivpam3t1xEqV1rcizWvxW96KF4YaIuhVt9QYIR8+NKxyFerq7TifhnR9Nx6c/O9fnwZ/ZPio3/o5e6KxrpxQAANbuL0NZvf9Juq4Bfv7DjWfgkiRJ7fcRh14OykpSw8tkZ9/NJ/tKsN75AfvdDj60zh2WjWW3TUWiSY/PDlVgu/N9teEG0CxN+WkqdjhkvLb1uPrBLoglqYtHK1W1q5yHka788nTAvhl/gUNU9jqzHVzsZDM7A7OoZvhrJhYykkzqeWxi2ScQcWzFucOy1arZ5hBGBHTWAc2SlKhAidCy+ttSFFe5Gt3b7A68sF6p2vxo9iCYDd4znqKJ4YaIup3pgzPx2++chd/NP8tnqAiF9sM92H4brcxkMwr89P1k+ajc+Ds0s7OG5aZgQv80tDtkdceXwyHjm9N12HK4AntPKYdwiuUdz5lA2mvPTPa+JhHCROOwtkIlKmg7TlTD7pAxsX8aBmd7V7A8TR+cidd+OFXdwl+QkeC29R0Azh4UuKn4vd2n8ODKfbht2Xas+Vap/pysbsLXp2qhk5ST5gElNKUlGlFe3xqw0fakxzZwobOD/ErrWtTG6Z9eMBQA1MZpV5DyX3Uc7qOpWJZlr+uoa2nDrqIaAMpus5lDlFD41ckary334XbQeW3DnLu7AOCsPlZMHpCONruMW17Zhkrn37v3dp/CqZpmZCWbcP1U/wflRgvDDRF1S3eeOwh3zBrU5fcZkJmIZLMBGUkmjPOx5borxLRd98qNmAQcnsoNAFw7WaneLN96Agvf3IXJj67Gd579DD94+Qtc+tdNuPCpjcr3TDR67bzShjtfR2GIHVNiy/cQTXgZ3TcVJk3fREdVG63JhRl4/Y5pGNcvFQvmDPHqPZnqrKIdLPXuu2mytePxT/YDUJppF7y5C7uKqtXjOaYUZqih12TQqTN33tvtWpryHHTnb1lKDNnThoqS2hZ8frQyYNPu+1+ehiwrS53XT+0PSVIahEtqW1zhxk/lBlBCAgDs1/QKPbX6EGb8aa06uRpQzhezO2QMykpCQUYi+qQmYFC2suX+iwC7zVbsPoVL//oZ/vLJAbcKSyhE5WZ4rnugXfKDieibloCjFY344as7UN/ShuedJ73fOWuQ29JnrHRuMhYRUQ+RYjHiPz+eAYNOCvu/dMX28AMl9ZBlGZIkoaZRLEuFp3IDAJeOy8cjH3yDUzXN6gdnokmP/LQE1Le0oba5DS1tDlw6Nt/rtXlWZUeQ3SH7DDfp6vlSynVrKzcWox6j+1qxq6jGGSK83z+Q8QVpWLnwHJ9fy3D23ewvqceStYfx8OWj1K/9bcNRlNa1ol96AgZnJ2PDwXL8cNl2dRlQLEkJV03oi9c/L8KHX5/BicomlNS2oLSuBYOyk/DMdRNwVh+r13RiQSxTia+X1bXgsiWbUF7fikSTHucMycLcs3Jx4chct4nMYufYlePzleDcLw17imuw4WCZ5ugF9x12WsM9Zt0cKq1XA8LTaw5icmE6Zg7JUpflZg11NXHPHJyFo+WN2Hy4AheNyoOnD746jZ+9sweyDOw9VYfn1h/GrKHZ+OHMQswZnuP3mjyJJbPhee6HzOalWvDqD6fie0u34MviGsx/dhOKqpqQlmjEjWcPCPr9I4nhhojinrasHk7nDs2GxajD/pJ6bD1aiSmFGah3NoiGa1kKULYUP3jpSPzv6zOY2D8d5wzNwrh+aW7N0e12h8/DQA16HfqkWnCyutltp5SQ6tEbNMRj2WnaoEzsKqrBvFF5PufxdMXPLxqOO1/bgWVbjmNEXgqum9ofZ2qb1R03919yFs4bkY3rX1LmyIidaPM8PtAn9k/HwKwkHKtodBs6eLC0AVc/vwVPfH9ch+HmdE0z2uwOLHhzF8rrW6HXSWiy2fHpN6X49JtSpH1kxPM3TMSMwVk4Ut6Ar0/VQq+T1GGPs4dlY09xDdZ8W4YS52GrQS1LlSrB+IGVe9HukJFk0qPRZse9b+3BR/fOwmfOLeDnanqWZg7JwvLPT2Czj1O61+0vw6K3lGDznTF5qG9px2eHKrDxYDk2HizHizdN8hmIPDXZ2lHkrPgMy/VeihySk4xXbp2CH7z0ufq822cORFInp4mHW/e4CiKiHig9yYTvTy7Aa1tP4KWNRzE0R/nAkiSEPQhcN7U/rgvQy+DvlHNA+UA/Wd2MjCTv/iVtCJMkYFC2e2/MPXMGI8ViUJfGwunCkbn4+YXD8MSqg3hg5V4Myk7GW9uK0NLmwJTCdHxnTB4kScI/bp2C772wBUcrGjGuX6rXeU2SJOGlmydj8+EKZKeYkZdqgdVixMP/3YdNhyvw4zd2qc/1DBx9nO9V19KOB1bsxfbj1UgxG7Bi4Uw02+xY820Z/vvlKRwpb8TNf9+Ghy4fpfZYzRqahUxnNWn28Gw8s+YQ1u4vg90hw6iX1KZhX4bkJEOvk1DT1IaXPjuKz49WwWzQYcWCmVj45m4cKK3Hrf/YhqKqJhj1ktvwyemDMqGTlG3xJbUtyHPOYPr8aCXufn0n2h0yrhifjye/Px56nYQTlY144tOD+O+Xp/H797/BOUOz1CnW/hwua4AsK+MOMv30vU3sn47nb5iIO1/bCavFgJtnFAZ8z2hizw0RURfcfs5A6CRg3YFybHMeO2C1GAPOr4m284bnwGTQYUqh9xlWaZoQ1i89wWvpzmox4sdzhvj9gOuqhecPwfwxfdBml3HnazvwH2ffzO/mj1T7dDKSTHjt9qn4/uR+eODSkT7fZ0hOMm6ZUYjvjOmDif3TMSQnGctum4K7znX1bWUlm5Bgcv/5tEd0vLVd2W7/52vGYXB2Mkb3TcW9c4fifz+dhSvG56PdIeOBFXvxwgalsnTFeNcy3bh+aUhLNKqD6/qkJrid9O7JYtSrTdZ/+kjpL/rJ+UMwNDcFS34wARajTj1DatKAdLeKSGqiUT0fbcuRCpyobMRTqw7ijld3oLXdgbln5eAv14xT/w4OyEzCY98di75pCThV0+w2cNAf0eg8PC9wA/n5I3Lx8b2z8N+F54Q90HcFww0RURcMyExSe0CeXHUAQHAD/KLpR7MHY+/D8zC50Hu3WJpmqcpzSSoaJEnCX64Zh1H5VnX3z9UT+no1f/dLT8Tj3xvn82fwx6DX4TffOQvPXDceyWaD334T7fbwH80e5NXTYzHq8fS14/HLi4dDcp7VZTHqcOFI1/P0Ogmzhmb7fE9/xNKUQ1a24N/pDGJDc1PwyBWj1eed67GNHgBmOLeEP/TffZj95/V4Zs0hNLS2Y8bgTCz5wUSvAXoJJj1+7+xremnjURzqYAv6AR87pfwZmpvid0dhrDDcEBF10Z3OXV1HnNNcw9lMHC7+hhdqg1gw27wjIcGkx0s3T0ZOihlWiwH/d/Hwjl8UgivG98WuBy7En7831ufXxaDI6YMy8X8X+f7ekiThx3OG4KWbJiPXasYPZw70Oq1eO8sn0E4pYYQmOPz+ilFus2GumdQPt84oRH6qBZeP827knuUMN/Ut7dBJSgB6+trxWHbbVL+N83NHKo3R7Q6lxyfQkRWunVKR6VeLNPbcEBF10YT+6ZhamIFtx5Vlqe5WuQkkLUFTufExhTla8tMSsOq+2X53dXVVoMnUi+YOw+DsZNx+zsCAvUuAEhDmOmfseDpXs6PJsy/Il/NG5OCp1QfxvUn93Ko+gBKmHr58lNsuMq3pgzPxu/lnAQAuH5ePHKv/nVlaD102Ep8dKsfnR6vwz23F+M6YPCSaDF73R3umVE/EcENEFAZ3njtIE266X+XGH+0kZV9HTERTrHo2huelYHhe16tFOVYLRuVbse90HQYEsUwzum8qvnp4HpJMoY8okCSpU3Og+qUn4qcXDMXjHx/Ab977Gr9572sAgEmvw7RBGVhw3hCMyEtBaZ3SND00xn8nOovhhogoDC4YkYNB2Uk4Wt7YLZel/NGGm1j03MSbP141Bh9+fQbzx/bp+MmA19JWNNxxziBsPqwcjSEO+7TZHfjsUAU+O1Sh7pjrm5aAFEvPqUJqMdwQEYWBTifhwUtH4pH3v8ElYzqeI9Jd5KcmYOaQTKQnmtyG1FHnjCtIC/sk7HAzGXR4446zAShnQjXZ7Cira8GrW4/jne0nXSeB99AlKQCQ5EAdRXGorq4OqampqK2thdVq7fgFREREvURJbQte+uwo1u4vw2++c5Z6hld3EMrnN8MNERERdXuhfH5zKzgRERHFFYYbIiIiiisMN0RERBRXGG6IiIgorjDcEBERUVzpFuHmueeeQ2FhISwWC6ZNm4Zt27YFfP67776LESNGwGKxYMyYMfjwww+jdKVERETU3cU83Lz99tu477778NBDD2HXrl0YN24c5s2bh7KyMp/P37JlC66//nrcfvvt2L17N6688kpceeWV2Lt3b5SvnIiIiLqjmM+5mTZtGqZMmYIlS5YAABwOBwoKCvCTn/wEv/71r72ef+2116KxsREffPCB+tjZZ5+N8ePHY+nSpR1+P865ISIi6nl6zJwbm82GnTt3Yu7cuepjOp0Oc+fOxdatW32+ZuvWrW7PB4B58+b5fX5rayvq6urcfhEREVH8imm4qaiogN1uR26u+3jn3NxclJSU+HxNSUlJSM9fvHgxUlNT1V8FBQXhuXgiIiLqlmLecxNp999/P2pra9VfxcXFsb4kIiIiiqCYngqelZUFvV6P0tJSt8dLS0uRl+f7VN28vLyQnm82m2E2m8NzwURERNTtxbRyYzKZMGnSJKxZs0Z9zOFwYM2aNZg+fbrP10yfPt3t+QCwatUqv88nIiKi3iWmlRsAuO+++3DLLbdg8uTJmDp1Kp5++mk0NjbitttuAwDcfPPN6Nu3LxYvXgwAuPfeezF79mw88cQTmD9/Pt566y3s2LEDL774Yix/DCIiIuomYh5urr32WpSXl+PBBx9ESUkJxo8fj48//lhtGi4qKoJO5yowzZgxA2+++SZ+97vf4Te/+Q2GDh2KFStWYPTo0UF9P7HznbumiIiIeg7xuR3MBJuYz7mJtpMnT3LHFBERUQ9VXFyMfv36BXxOrws3DocDp0+fRkpKCiRJCut719XVoaCgAMXFxRwQGATer+DxXoWG9ys0vF+h4f0KTbjulyzLqK+vR35+vtuKji8xX5aKNp1O12Hi6yqr1cq/8CHg/Qoe71VoeL9Cw/sVGt6v0ITjfqWmpgb1vLifc0NERES9C8MNERERxRWGmzAym8146KGHODQwSLxfweO9Cg3vV2h4v0LD+xWaWNyvXtdQTERERPGNlRsiIiKKKww3REREFFcYboiIiCiuMNwQERFRXGG4CZPnnnsOhYWFsFgsmDZtGrZt2xbrS+oWFi9ejClTpiAlJQU5OTm48sorceDAAbfntLS0YMGCBcjMzERycjK++93vorS0NEZX3H386U9/giRJWLRokfoY75W7U6dO4cYbb0RmZiYSEhIwZswY7NixQ/26LMt48MEH0adPHyQkJGDu3Lk4dOhQDK84dux2Ox544AEMHDgQCQkJGDx4MP7whz+4ndPTm+/Xxo0bcdlllyE/Px+SJGHFihVuXw/m3lRVVeGGG26A1WpFWloabr/9djQ0NETxp4ieQPerra0Nv/rVrzBmzBgkJSUhPz8fN998M06fPu32HpG8Xww3YfD222/jvvvuw0MPPYRdu3Zh3LhxmDdvHsrKymJ9aTG3YcMGLFiwAJ9//jlWrVqFtrY2XHTRRWhsbFSf87Of/Qzvv/8+3n33XWzYsAGnT5/G1VdfHcOrjr3t27fjb3/7G8aOHev2OO+VS3V1NWbOnAmj0YiPPvoI33zzDZ544gmkp6erz3n88cfx7LPPYunSpfjiiy+QlJSEefPmoaWlJYZXHhuPPfYYXnjhBSxZsgTffvstHnvsMTz++OP461//qj6nN9+vxsZGjBs3Ds8995zPrwdzb2644Qbs27cPq1atwgcffICNGzfirrvuitaPEFWB7ldTUxN27dqFBx54ALt27cJ//vMfHDhwAJdffrnb8yJ6v2TqsqlTp8oLFixQf2+32+X8/Hx58eLFMbyq7qmsrEwGIG/YsEGWZVmuqamRjUaj/O6776rP+fbbb2UA8tatW2N1mTFVX18vDx06VF61apU8e/Zs+d5775VlmffK069+9Sv5nHPO8ft1h8Mh5+XlyX/+85/Vx2pqamSz2Sz/85//jMYldivz58+Xf/jDH7o9dvXVV8s33HCDLMu8X1oA5Pfee0/9fTD35ptvvpEByNu3b1ef89FHH8mSJMmnTp2K2rXHguf98mXbtm0yAPnEiROyLEf+frFy00U2mw07d+7E3Llz1cd0Oh3mzp2LrVu3xvDKuqfa2loAQEZGBgBg586daGtrc7t/I0aMQP/+/Xvt/VuwYAHmz5/vdk8A3itP//3vfzF58mRcc801yMnJwYQJE/DSSy+pXz927BhKSkrc7ldqaiqmTZvWK+/XjBkzsGbNGhw8eBAA8OWXX2LTpk245JJLAPB+BRLMvdm6dSvS0tIwefJk9Tlz586FTqfDF198EfVr7m5qa2shSRLS0tIARP5+9bqDM8OtoqICdrsdubm5bo/n5uZi//79Mbqq7snhcGDRokWYOXMmRo8eDQAoKSmByWRS/8ILubm5KCkpicFVxtZbb72FXbt2Yfv27V5f471yd/ToUbzwwgu477778Jvf/Abbt2/HT3/6U5hMJtxyyy3qPfH1/83eeL9+/etfo66uDiNGjIBer4fdbsejjz6KG264AQB4vwII5t6UlJQgJyfH7esGgwEZGRm9/v61tLTgV7/6Fa6//nr14MxI3y+GG4qaBQsWYO/evdi0aVOsL6VbKi4uxr333otVq1bBYrHE+nK6PYfDgcmTJ+OPf/wjAGDChAnYu3cvli5diltuuSXGV9f9vPPOO3jjjTfw5ptvYtSoUdizZw8WLVqE/Px83i+KmLa2Nnz/+9+HLMt44YUXovZ9uSzVRVlZWdDr9V47VkpLS5GXlxejq+p+Fi5ciA8++ADr1q1Dv3791Mfz8vJgs9lQU1Pj9vzeeP927tyJsrIyTJw4EQaDAQaDARs2bMCzzz4Lg8GA3Nxc3iuNPn36YOTIkW6PnXXWWSgqKgIA9Z7w/5uK//u//8Ovf/1rXHfddRgzZgxuuukm/OxnP8PixYsB8H4FEsy9ycvL89pE0t7ejqqqql57/0SwOXHiBFatWqVWbYDI3y+Gmy4ymUyYNGkS1qxZoz7mcDiwZs0aTJ8+PYZX1j3IsoyFCxfivffew9q1azFw4EC3r0+aNAlGo9Ht/h04cABFRUW97v5dcMEF+Prrr7Fnzx711+TJk3HDDTeo/8x75TJz5kyvsQIHDx7EgAEDAAADBw5EXl6e2/2qq6vDF1980SvvV1NTE3Q693/l6/V6OBwOALxfgQRzb6ZPn46amhrs3LlTfc7atWvhcDgwbdq0qF9zrIlgc+jQIaxevRqZmZluX4/4/epySzLJb731lmw2m+Vly5bJ33zzjXzXXXfJaWlpcklJSawvLebuueceOTU1VV6/fr185swZ9VdTU5P6nLvvvlvu37+/vHbtWnnHjh3y9OnT5enTp8fwqrsP7W4pWea90tq2bZtsMBjkRx99VD506JD8xhtvyImJifLrr7+uPudPf/qTnJaWJq9cuVL+6quv5CuuuEIeOHCg3NzcHMMrj41bbrlF7tu3r/zBBx/Ix44dk//zn//IWVlZ8i9/+Uv1Ob35ftXX18u7d++Wd+/eLQOQn3zySXn37t3q7p5g7s3FF18sT5gwQf7iiy/kTZs2yUOHDpWvv/76WP1IERXoftlsNvnyyy+X+/XrJ+/Zs8ft3/2tra3qe0TyfjHchMlf//pXuX///rLJZJKnTp0qf/7557G+pG4BgM9f//jHP9TnNDc3yz/+8Y/l9PR0OTExUb7qqqvkM2fOxO6iuxHPcMN75e7999+XR48eLZvNZnnEiBHyiy++6PZ1h8MhP/DAA3Jubq5sNpvlCy64QD5w4ECMrja26urq5HvvvVfu37+/bLFY5EGDBsm//e1v3T5sevP9Wrdunc9/V91yyy2yLAd3byorK+Xrr79eTk5Olq1Wq3zbbbfJ9fX1MfhpIi/Q/Tp27Jjff/evW7dOfY9I3i9JljXjKYmIiIh6OPbcEBERUVxhuCEiIqK4wnBDREREcYXhhoiIiOIKww0RERHFFYYbIiIiiisMN0RERBRXGG6IqNcpLCzE008/HevLIKIIYbghooi69dZbceWVVwIA5syZg0WLFkXtey9btgxpaWlej2/fvh133XVX1K6DiKLLEOsLICIKlc1mg8lk6vTrs7Ozw3g1RNTdsHJDRFFx6623YsOGDXjmmWcgSRIkScLx48cBAHv37sUll1yC5ORk5Obm4qabbkJFRYX62jlz5mDhwoVYtGgRsrKyMG/ePADAk08+iTFjxiApKQkFBQX48Y9/jIaGBgDA+vXrcdttt6G2tlb9fg8//DAA72WpoqIiXHHFFUhOTobVasX3v/99lJaWql9/+OGHMX78eCxfvhyFhYVITU3Fddddh/r6+sjeNCLqFIYbIoqKZ555BtOnT8edd96JM2fO4MyZMygoKEBNTQ3OP/98TJgwATt27MDHH3+M0tJSfP/733d7/auvvgqTyYTNmzdj6dKlAACdTodnn30W+/btw6uvvoq1a9fil7/8JQBgxowZePrpp2G1WtXv94tf/MLruhwOB6644gpUVVVhw4YNWLVqFY4ePYprr73W7XlHjhzBihUr8MEHH+CDDz7Ahg0b8Kc//SlCd4uIuoLLUkQUFampqTCZTEhMTEReXp76+JIlSzBhwgT88Y9/VB975ZVXUFBQgIMHD2LYsGEAgKFDh+Lxxx93e09t/05hYSH+3//7f7j77rvx/PPPw2QyITU1FZIkuX0/T2vWrMHXX3+NY8eOoaCgAADw2muvYdSoUdi+fTumTJkCQAlBy5YtQ0pKCgDgpptuwpo1a/Doo4927cYQUdixckNEMfXll19i3bp1SE5OVn+NGDECgFItESZNmuT12tWrV+OCCy5A3759kZKSgptuugmVlZVoamoK+vt/++23KCgoUIMNAIwcORJpaWn49ttv1ccKCwvVYAMAffr0QVlZWUg/KxFFBys3RBRTDQ0NuOyyy/DYY495fa1Pnz7qPyclJbl97fjx47j00ktxzz334NFHH0VGRgY2bdqE22+/HTabDYmJiWG9TqPR6PZ7SZLgcDjC+j2IKDwYbogoakwmE+x2u9tjEydOxL///W8UFhbCYAj+X0k7d+6Ew+HAE088AZ1OKUK/8847HX4/T2eddRaKi4tRXFysVm+++eYb1NTUYOTIkUFfDxF1H1yWIqKoKSwsxBdffIHjx4+joqICDocDCxYsQFVVFa6//nps374dR44cwSeffILbbrstYDAZMmQI2tra8Ne//hVHjx7F8uXL1UZj7fdraGjAmjVrUFFR4XO5au7cuRgzZgxuuOEG7Nq1C9u2bcPNN9+M2bNnY/LkyWG/B0QUeQw3RBQ1v/jFL6DX6zFy5EhkZ2ejqKgI+fn52Lx5M+x2Oy666CKMGTMGixYtQlpamlqR8WXcuHF48skn8dhjj2H06NF44403sHjxYrfnzJgxA3fffTeuvfZaZGdnezUkA8ry0sqVK5Geno5zzz0Xc+fOxaBBg/D222+H/ecnouiQZFmWY30RREREROHCyg0RERHFFYYbIiIiiisMN0RERBRXGG6IiIgorjDcEBERUVxhuCEiIqK4wnBDREREcYXhhoiIiOIKww0RERHFFYYbIiIiiisMN0RERBRXGG6IiIgorvx/kJqI9liympYAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Plot Train Accuracy\n",
        "fig = plt.figure(facecolor=\"w\")\n",
        "plt.plot(acc_hist)\n",
        "plt.title(\"Train Set Accuracy\")\n",
        "plt.xlabel(\"Iteration\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 472
        },
        "id": "AtZ1USqH9I_3",
        "outputId": "c279928d-5652-49e2-f528-e32d98719b54"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABv1klEQVR4nO3deXxU1fk/8M/sySQhJCSELRBcEUFAEMQFtyhaRNGvFakFRKvVQgX5+nUX3FGrFBeUn7YuVVCqrdq6UxYtLYKyuCFuiKAQSNiSzCSz3t8fM+fOvTN39juZyczn/XrxkkxuZs7cRM6T5zznPAZJkiQQERER5QljtgdAREREpCcGN0RERJRXGNwQERFRXmFwQ0RERHmFwQ0RERHlFQY3RERElFcY3BAREVFeYXBDREREeYXBDREREeUVBjdEBAC47LLLUFdXl+1hEBGljcENUY4zGAwJ/Vm1alW2hxph27ZtmDZtGg499FAUFRWhR48eGDNmDObOnZvS87399tu44447UvrakSNHwmAw4Mknn0zp64mo8zCwtxRRbnvxxRdVH//lL3/BsmXL8MILL6geP/PMM1FTU5Py63g8Hvj9fthstpSfQ+m7777Dcccdh+LiYlx++eWoq6vDrl27sGHDBrzzzjtob29P+jlnzJiBhQsXItl/tr799lscccQRqKurQ+/evbF69eqkX5uIOg9ztgdARLH9+te/Vn380UcfYdmyZRGPh3M6nbDb7Qm/jsViSWl80fzxj39Ea2srNm3ahH79+qk+t2fPHl1fK54XX3wR3bt3x8MPP4yLLroI27Zty8klOL/fD7fbjaKiomwPhahT47IUUR449dRTMWjQIKxfvx5jxoyB3W7HLbfcAgB44403MG7cOPTq1Qs2mw2HHnoo7r77bvh8PtVzhNfcbNu2DQaDAQ899BCeeuopHHroobDZbDjuuOPw8ccfxx3T999/jz59+kQENgDQvXv3iMfeeecdnHzyySgpKUFZWRnGjRuHL7/8UjW+hQsXAlAv1SViyZIluOiii3DuueeivLwcS5Ys0bxu7dq1+MUvfoGKigqUlJTgmGOOwSOPPKK6ZsuWLbj44otRXV2N4uJiHHnkkbj11ltV49QKnO64446I8RoMBsyYMQOLFy/G0UcfDZvNhnfffRcA8NBDD+GEE05At27dUFxcjOHDh+PVV1/VHPeLL76IkSNHwm63o6KiAmPGjMH7778PAJg6dSqqqqrg8Xgivu6ss87CkUceGf3GEXVSDG6I8sTevXtxzjnnYOjQoViwYAFOO+00AMBzzz2H0tJSzJ49G4888giGDx+OOXPm4KabbkroeZcsWYI//OEP+O1vf4t77rkH27Ztw4UXXqg5WSr169cPO3bswIoVK+K+xgsvvIBx48ahtLQUDzzwAG6//XZs3rwZJ510ErZt2wYA+O1vf4szzzxTvl78iWft2rX47rvvMGnSJFitVlx44YVYvHhxxHXLli3DmDFjsHnzZsycORMPP/wwTjvtNLz55pvyNZ999hlGjRqFFStW4Morr8QjjzyCCRMm4J///GfccUSzYsUKXHfddZg4cSIeeeQROTB65JFHMGzYMNx111247777YDab8ctf/hJvvfWW6uvvvPNOTJ48GRaLBXfddRfuvPNO1NbWyvd98uTJ2Lt3L9577z3V1zU0NGDFihVxM4BEnZJERJ3K9OnTpfD/dU855RQJgLRo0aKI651OZ8Rjv/3tbyW73S61t7fLj02dOlXq16+f/PEPP/wgAZC6desm7du3T378jTfekABI//znP2OO84svvpCKi4slANLQoUOlmTNnSq+//rrkcDhU17W0tEhdu3aVrrzyStXjDQ0NUnl5uepxrfcez4wZM6Ta2lrJ7/dLkiRJ77//vgRA2rhxo3yN1+uV+vfvL/Xr10/av3+/6uvF10mSJI0ZM0YqKyuTfvzxx6jXhN9HYe7cuRFjByAZjUbpyy+/jLg+/PvmdrulQYMGSaeffrr82LfffisZjUbpggsukHw+n+aYfD6f1KdPH2nixImqz8+fP18yGAzS1q1bI16bqLNj5oYoT9hsNkybNi3i8eLiYvnvLS0taGpqwsknnwyn04ktW7bEfd6JEyeioqJC/vjkk08GAGzdujXm1x199NHYtGkTfv3rX2Pbtm1ylqOmpgZPP/20fN2yZctw4MABTJo0CU1NTfIfk8mEUaNGYeXKlXHHGI3X68XSpUsxceJEeUno9NNPR/fu3VXZm40bN+KHH37ArFmz0LVrV9VziK9rbGzEhx9+iMsvvxx9+/bVvCYVp5xyCgYOHBjxuPL7tn//fhw8eBAnn3wyNmzYID/++uuvw+/3Y86cOTAa1f+cizEZjUZceuml+Mc//oGWlhb584sX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mzdLV111ldS1a1epoaEh20PLumuuuUYqLy+XVq1aJe3atUv+43Q65WuuvvpqqW/fvtKKFSukTz75RBo9erQ0evToLI46dyh3S0kS75XSunXrJLPZLN17773St99+Ky1evFiy2+3Siy++KF9z//33S127dpXeeOMN6bPPPpPOP/98qX///lJbW1sWR54dU6dOlXr37i29+eab0g8//CD9/e9/l6qqqqQbbrhBvqaQ71dLS4u0ceNGaePGjRIAaf78+dLGjRvl3T2J3Juzzz5bGjZsmLR27Vpp9erV0uGHHy5NmjQpW28po2LdL7fbLZ133nlSnz59pE2bNqn+7Xe5XPJzZPJ+MbjRyWOPPSb17dtXslqt0siRI6WPPvoo20PKCQA0/zz77LPyNW1tbdLvfvc7qaKiQrLb7dIFF1wg7dq1K3uDziHhwQ3vldo///lPadCgQZLNZpMGDBggPfXUU6rP+/1+6fbbb5dqamokm80mnXHGGdLXX3+dpdFmV3NzszRz5kypb9++UlFRkXTIIYdIt956q2qyKeT7tXLlSs1/q6ZOnSpJUmL3Zu/evdKkSZOk0tJSqUuXLtK0adOklpaWLLybzIt1v3744Yeo//avXLlSfo5M3i+DJCmOpyQiIiLq5FhzQ0RERHmFwQ0RERHlFQY3RERElFcY3BAREVFeYXBDREREeYXBDREREeUVBjdERESUVxjcEFHBqaurw4IFC7I9DCLKEAY3RJRRl112GSZMmAAAOPXUUzFr1qwOe+3nnnsOXbt2jXj8448/xlVXXdVh4yCijmXO9gCIiJLldrthtVpT/vrq6modR0NEuYaZGyLqEJdddhk++OADPPLIIzAYDDAYDNi2bRsA4IsvvsA555yD0tJS1NTUYPLkyWhqapK/9tRTT8WMGTMwa9YsVFVVYezYsQCA+fPnY/DgwSgpKUFtbS1+97vfobW1FQCwatUqTJs2DQcPHpRf74477gAQuSy1fft2nH/++SgtLUWXLl1w8cUXY/fu3fLn77jjDgwdOhQvvPAC6urqUF5ejksuuQQtLS2ZvWlElBIGN0TUIR555BGMHj0aV155JXbt2oVdu3ahtrYWBw4cwOmnn45hw4bhk08+wbvvvovdu3fj4osvVn39888/D6vViv/85z9YtGgRAMBoNOLRRx/Fl19+ieeffx4rVqzADTfcAAA44YQTsGDBAnTp0kV+veuvvz5iXH6/H+effz727duHDz74AMuWLcPWrVsxceJE1XXff/89Xn/9dbz55pt488038cEHH+D+++/P0N0ionRwWYqIOkR5eTmsVivsdjt69OghP/74449j2LBhuO++++THnnnmGdTW1uKbb77BEUccAQA4/PDD8eCDD6qeU1m/U1dXh3vuuQdXX301nnjiCVitVpSXl8NgMKheL9zy5cvx+eef44cffkBtbS0A4C9/+QuOPvpofPzxxzjuuOMABIKg5557DmVlZQCAyZMnY/ny5bj33nvTuzFEpDtmbogoqz799FOsXLkSpaWl8p8BAwYACGRLhOHDh0d87b/+9S+cccYZ6N27N8rKyjB58mTs3bsXTqcz4df/6quvUFtbKwc2ADBw4EB07doVX331lfxYXV2dHNgAQM+ePbFnz56k3isRdQxmbogoq1pbWzF+/Hg88MADEZ/r2bOn/PeSkhLV57Zt24Zzzz0X11xzDe69915UVlZi9erVuOKKK+B2u2G323Udp8ViUX1sMBjg9/t1fQ0i0geDGyLqMFarFT6fT/XYsccei7/97W+oq6uD2Zz4P0nr16+H3+/Hww8/DKMxkIT+61//Gvf1wh111FHYsWMHduzYIWdvNm/ejAMHDmDgwIEJj4eIcgeXpYiow9TV1WHt2rXYtm0bmpqa4Pf7MX36dOzbtw+TJk3Cxx9/jO+//x7vvfcepk2bFjMwOeyww+DxePDYY49h69ateOGFF+RCY+Xrtba2Yvny5WhqatJcrqqvr8fgwYNx6aWXYsOGDVi3bh2mTJmCU045BSNGjND9HhBR5jG4IaIOc/3118NkMmHgwIGorq7G9u3b0atXL/znP/+Bz+fDWWedhcGDB2PWrFno2rWrnJHRMmTIEMyfPx8PPPAABg0ahMWLF2PevHmqa0444QRcffXVmDhxIqqrqyMKkoHA8tIbb7yBiooKjBkzBvX19TjkkEOwdOlS3d8/EXUMgyRJUrYHQURERKQXZm6IiIgorzC4ISIiorzC4IaIiIjyCoMbIiIiyisMboiIiCivMLghIiKivMLghoiIiPIKgxsiIiLKKwxuiIiIKK8wuCEiIqK8wuCGiIiI8gqDGyIiIsor/x/N3rTUyK+OogAAAABJRU5ErkJggg==\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Plot Test Accuracy\n",
        "fig = plt.figure(facecolor=\"w\")\n",
        "plt.plot(test_acc_hist)\n",
        "plt.title(\"Test Set Accuracy\")\n",
        "plt.xlabel(\"Iteration\")\n",
        "plt.ylabel(\"Accuracy\")\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 472
        },
        "id": "3JqDOEAG1c0S",
        "outputId": "e32a969f-bde4-4762-b864-02b9f52778e2"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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Px+lpaXhHlpYbdq0CQUFBdi2bRvWr18Pm82Gm2++GZWVldIxDz/8ML744gusWrUKmzZtwunTpzFmzJgwjloeduzYgX/+85/o3bu31+O8Xm4XLlzAoEGDoNPp8NVXX2Hfvn146aWX0KZNG+mY+fPnY9GiRXjjjTdQWFiI6Oho5Ofno6amJowjD4958+ZhyZIleO2117B//37MmzcP8+fPx6uvviodo9TrVVlZiSuuuAKLFy/2+XxTrsvEiRPx66+/Yv369Vi7di02b96MadOmhepbCKmGrldVVRV2796N2bNnY/fu3fj0009x8OBB3HrrrV7HBfV6CRQUV199tVBQUCB97XA4hMzMTGHu3LlhHJX8lJaWCgCETZs2CYIgCGVlZYJOpxNWrVolHbN//34BgLB169ZwDTPszGaz0KVLF2H9+vXC9ddfLzz00EOCIPB61fXXv/5VuPbaa/0+73Q6hfT0dOH//u//pMfKysoEg8EgvP/++6EYoqwMGzZMuPvuu70eGzNmjDBx4kRBEHi9RACE1atXS1835brs27dPACDs2LFDOuarr74SVCqV8Pvvv4ds7OFQ93r5sn37dgGAcPLkSUEQgn+9mNkJAqvVil27diEvL096TK1WIy8vD1u3bg3jyOSnvLwcAJCYmAgA2LVrF2w2m9e1y8nJQfv27RV97QoKCjBs2DCv6wLwetX1+eefo1+/frj99tuRmpqKPn364K233pKeP378OIxGo9f1io+Px4ABAxR5va655hps2LABhw4dAgD89NNP2LJlC4YOHQqA18ufplyXrVu3IiEhAf369ZOOycvLg1qtRmFhYcjHLDfl5eVQqVRISEgAEPzrxY1Ag+Ds2bNwOBxIS0vzejwtLQ0HDhwI06jkx+l0YsaMGRg0aBB69uwJADAajdDr9dL/AKK0tDQYjcYwjDL8PvjgA+zevRs7duyo9xyvl7djx45hyZIlmDlzJp544gns2LEDDz74IPR6PaZMmSJdE1//byrxej3++OMwmUzIycmBRqOBw+HA888/j4kTJwIAr5cfTbkuRqMRqampXs9rtVokJiYq+toBrjrDv/71r5gwYYK0EWiwrxeDHQqbgoIC/PLLL9iyZUu4hyJbp06dwkMPPYT169cjIiIi3MORPafTiX79+uGFF14AAPTp0we//PIL3njjDUyZMiXMo5Ofjz76CCtWrMDKlSvRo0cP7NmzBzNmzEBmZiavFwWFzWbDuHHjIAgClixZErL35TRWECQnJ0Oj0dRbEVNSUoL09PQwjUpepk+fjrVr1+K7775Du3btpMfT09NhtVpRVlbmdbxSr92uXbtQWlqKq666ClqtFlqtFps2bcKiRYug1WqRlpbG6+UhIyMD3bt393qsW7duKCoqAgDpmvD/TZdHH30Ujz/+OMaPH49evXph0qRJePjhhzF37lwAvF7+NOW6pKen11uQYrfbcf78ecVeOzHQOXnyJNavXy9ldYDgXy8GO0Gg1+vRt29fbNiwQXrM6XRiw4YNyM3NDePIwk8QBEyfPh2rV6/Gxo0bkZ2d7fV83759odPpvK7dwYMHUVRUpMhrd+ONN+Lnn3/Gnj17pI9+/fph4sSJ0ue8Xm6DBg2q18rg0KFD6NChAwAgOzsb6enpXtfLZDKhsLBQkderqqoKarX3bUCj0cDpdALg9fKnKdclNzcXZWVl2LVrl3TMxo0b4XQ6MWDAgJCPOdzEQOfw4cP49ttvkZSU5PV80K/XJZc4k08ffPCBYDAYhHfeeUfYt2+fMG3aNCEhIUEwGo3hHlpY3XfffUJ8fLzw/fffC8XFxdJHVVWVdMy9994rtG/fXti4caOwc+dOITc3V8jNzQ3jqOXFczWWIPB6edq+fbug1WqF559/Xjh8+LCwYsUKISoqSli+fLl0zIsvvigkJCQIn332mbB3715h5MiRQnZ2tlBdXR3GkYfHlClThLZt2wpr164Vjh8/Lnz66adCcnKy8Nhjj0nHKPV6mc1m4ccffxR+/PFHAYDw8ssvCz/++KO0eqgp1+WPf/yj0KdPH6GwsFDYsmWL0KVLF2HChAnh+paCqqHrZbVahVtvvVVo166dsGfPHq9/+y0Wi3SOYF4vBjtB9Oqrrwrt27cX9Hq9cPXVVwvbtm0L95DCDoDPj6VLl0rHVFdXC/fff7/Qpk0bISoqShg9erRQXFwcvkHLTN1gh9fL2xdffCH07NlTMBgMQk5OjvDmm296Pe90OoXZs2cLaWlpgsFgEG688Ubh4MGDYRpteJlMJuGhhx4S2rdvL0RERAidOnUS/va3v3ndgJR6vb777juf/1ZNmTJFEISmXZdz584JEyZMEGJiYoS4uDjhrrvuEsxmcxi+m+Br6HodP37c77/93333nXSOYF4vlSB4tMokIiIiamVYs0NEREStGoMdIiIiatUY7BAREVGrxmCHiIiIWjUGO0RERNSqMdghIiKiVo3BDhEREbVqDHaIiAB07NgRCxYsCPcwiCgIGOwQUcjdeeedGDVqFADgD3/4A2bMmBGy937nnXeQkJBQ7/EdO3Zg2rRpIRsHEYWONtwDICIKBKvVCr1ef9GvT0lJCeBoiEhOmNkhorC58847sWnTJixcuBAqlQoqlQonTpwAAPzyyy8YOnQoYmJikJaWhkmTJuHs2bPSa//whz9g+vTpmDFjBpKTk5Gfnw8AePnll9GrVy9ER0cjKysL999/PyoqKgAA33//Pe666y6Ul5dL7/f0008DqD+NVVRUhJEjRyImJgZxcXEYN24cSkpKpOeffvppXHnllVi2bBk6duyI+Ph4jB8/HmazObgXjYiajcEOEYXNwoULkZubi3vuuQfFxcUoLi5GVlYWysrKMGTIEPTp0wc7d+7EunXrUFJSgnHjxnm9/t1334Ver8cPP/yAN954AwCgVquxaNEi/Prrr3j33XexceNGPPbYYwCAa665BgsWLEBcXJz0fo888ki9cTmdTowcORLnz5/Hpk2bsH79ehw7dgx33HGH13FHjx7FmjVrsHbtWqxduxabNm3Ciy++GKSrRUQXi9NYRBQ28fHx0Ov1iIqKQnp6uvT4a6+9hj59+uCFF16QHvvXv/6FrKwsHDp0CJdffjkAoEuXLpg/f77XOT3rfzp27IjnnnsO9957L15//XXo9XrEx8dDpVJ5vV9dGzZswM8//4zjx48jKysLAPDee++hR48e2LFjB/r37w/AFRS98847iI2NBQBMmjQJGzZswPPPP39pF4aIAoqZHSKSnZ9++gnfffcdYmJipI+cnBwArmyKqG/fvvVe++233+LGG29E27ZtERsbi0mTJuHcuXOoqqpq8vvv378fWVlZUqADAN27d0dCQgL2798vPdaxY0cp0AGAjIwMlJaWNut7JaLgY2aHiGSnoqICI0aMwLx58+o9l5GRIX0eHR3t9dyJEycwfPhw3HfffXj++eeRmJiILVu2YOrUqbBarYiKigroOHU6ndfXKpUKTqczoO9BRJeOwQ4RhZVer4fD4fB67KqrrsInn3yCjh07Qqtt+j9Tu3btgtPpxEsvvQS12pW4/uijjxp9v7q6deuGU6dO4dSpU1J2Z9++fSgrK0P37t2bPB4ikgdOYxFRWHXs2BGFhYU4ceIEzp49C6fTiYKCApw/fx4TJkzAjh07cPToUXz99de46667GgxULrvsMthsNrz66qs4duwYli1bJhUue75fRUUFNmzYgLNnz/qc3srLy0OvXr0wceJE7N69G9u3b8fkyZNx/fXXo1+/fgG/BkQUXAx2iCisHnnkEWg0GnTv3h0pKSkoKipCZmYmfvjhBzgcDtx8883o1asXZsyYgYSEBClj48sVV1yBl19+GfPmzUPPnj2xYsUKzJ071+uYa665Bvfeey/uuOMOpKSk1CtwBlzTUZ999hnatGmDwYMHIy8vD506dcKHH34Y8O+fiIJPJQiCEO5BEBEREQULMztERETUqjHYISIiolaNwQ4RERG1agx2iIiIqFVjsENEREStGoMdIiIiatUY7BAREVGrxmCHiIiIWjUGO0RERNSqMdghIiKiVo3BDhEREbVqDHaIiIioVfv/gmNl9A3BhtoAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    }
  ]
}